- 1. rails ページネーションの実装
- 2. Railsでtodoアプリを作った
- 3. 単体テスト用に ActionView::Helpers::FormBuilder オブジェクトを生成する
- 4. 【Rails】新規アプリケーション作成までの流れ(確認方法もご紹介)
- 5. rubyにおけるオブジェクトとメソッドについて
- 6. -3の2乗 という計算
- 7. rubyの基本文法1
- 8. return、 break、nextの違い
- 9. Ruby | Qiita API で自分の記事全てを編集してリンクを追加したスクリプトの例
- 10. 【Ruby】APOD APIで毎日更新される宇宙写真を保存する
- 11. windows10でvagrant(ubuntu20.04)を使いrails6のローカル開発環境を構築する
- 12. ローカルからDocker内に入るコマンド
- 13. Ruby on Railsでアプリを作る準備をする
- 14. 【Ruby翻訳】実務でリーダブルコードはどう役に立つのか ~Part1~
- 15. Ruby で楽しいルーレット
- 16. Rubyで通信を伴うSPAを構築してみました
- 17. authenticate_user!メソッドの使い方
- 18. Linuxコマンド一覧
- 19. Docker を使ってRuby on Railsの開発環境を構築(M1チップのMac)
- 20. RubyのSymbol(シンボル)とは?文字列とは何が違うのか
rails ページネーションの実装
### 1、gem kaminariをインストール
“`
gem ‘kaminari’
“`
としbundle installで完了。### 2、デフォルトの設定をいじる
“`
rails g kaminari:config
“`
コマンドでページネーションの設定を書き込むファイルを作成。“`kaminari_config.rb
# frozen_string_literal: trueKaminari.configure do |config|
# config.default_per_page = 25
# config.max_per_page = nil
# config.window = 4
# config.outer_window = 0
# config.left = 0
# config.right = 0
# config.page_method_name = :page
# config.param_name = :page
# config.max_pages = nil
# config.para
Railsでtodoアプリを作った
# 下準備
まずはファイルを作成する
“`
rails new rails-todo
“`
でファイル作成。その後
“`
cd rails-todo
“`
で目的のディレクトリに移動
# Modelを作成
“`
rails g model Task title:string
“`
でstring型のtitleというカラム名を持ったTaskテーブルというモデルを作成した。
このままではデータベースに反映されていないので
“`
rake db:migrate
“`
でデータベースに反映させる。
# Controllerを作成する
“`
rails g controller Tasks
“`
でコントローラーを作成。コントローラーは基本複数形であることに注意。
次に作成されたコントローラーにアクションを追加。/tasksにアクセスした際のアクションを追加。Task.allで全タスクを取得。
“`ruby:app/controller/tasks_controller.rb
class TasksController < ApplicationController
単体テスト用に ActionView::Helpers::FormBuilder オブジェクトを生成する
# 方法
“`rb
class DummyFormBuilder < ActionView::Helpers::FormBuilder # 引数に Active Record を渡す前提。 def initialize(model_object) object_name = model_object.model_name.param_key template = ActionView::Base.empty options = {} super(object_name, model_object, template, options) end end ``` ```rb # user #=> #
# user.model_name.param_key #=> “user”
let!(:f) { DummyFormBuilder.new(user) }
“`# バージョン情報
– Ruby 2.7
【Rails】新規アプリケーション作成までの流れ(確認方法もご紹介)
新規アプリケーション作成時の流れと、その作業がしっかり完了しているのか確認する手順も踏まえてご紹介いたします。
### はじめに
指定したフォルダ内にアプリケーションを格納したい場合は予めフォルダを作成しておく。
(例 projects、Macの場合は「Finder」)→ 新規アプリケーション作成前にターミナルでそのディレクトリ(フォルダ)に移動しておきましょう。
projectsディレクトリの場合
“`
cd projects
“`## 1 新規アプリケーション作成
##### ①新規アプリケーション作成コマンドを実行(ターミナル)
“`
rails _6.0.0_ new アプリ名 -d mysql
“`##### ②作成した以下のファイル内を変更(コードエディタ)
14行目くらいにある encoding: utf8mb4 を encoding: utf8 に変更config/database.yml
“`
default: &default
adapter: mysql2
encoding: utf8 #こちらの記述に変
rubyにおけるオブジェクトとメソッドについて
# rubyにおけるオブジェクトとメソッドについて
“`
puts “apple”.length
“`
## オブジェクトとは
文字列や値、配列や浮動小数点等 物。
上記のコードでいう __apple__
## メソッドとは
オブジェクトに意味を与えるもの
上記のコードを参照すると __puts__ __length__
appleというオブジェクトの文字数を表示してになる。#### 補足
オブジェクトやメソッドは言語によって捉え方が違う。
学習していく中で語句の知識を深めていきたい。
-3の2乗 という計算
# これは何?
指数演算子が `**` だとして。
`-3**2` という文字列を評価する場合。
* `(-3)**2`
* `-(3**2)`という二通りの解釈があり得る。
一方。
数学では $-3^{2}$ は $-(3^{2})$ と評価するのが常識となっている。
プログラミング言語ではどうなっているだろうという調査。# 各言語の対応
## ruby
この調査を始めようと思ったきっかけ。
“`ruby:ruby3.1
p( -3**2 ) #=> -9
“`つまり、 `-3**2` は `-(3**2)` となる。
[Ruby 3.1 リファレンスマニュアル 演算子式](https://docs.ruby-lang.org/ja/latest/doc/spec=2foperator.html) を見ると、単項 `-` より `**` の優先順位が上なのでそうだよね。
……という簡単な話ではない。“`ruby:ruby3.1
p( -2[3] ) #=> 1
p( (-2)[3] ) #=> 1
p( -(2[3]) ) #=> 0
rubyの基本文法1
# rubyの基本文法
Rubyのプログラムファイルは、拡張子「.rb」で作成する。
“`ruby:qiita.rb
puts ‘Hello world.’
“`## メソッド(関数)とは
何らかの処理をさせる命令
上記のコードを例にするとputsの部分
## 引数
関数の後ろに続く記述
メソッドに渡す値を記述する
putsメソッドの引数’Hello, World.’によって、「Hello, World.」という文字列が出力されます。
文字列は、ダブルクォーテーション(”)またはシングルクォーテーション(’)で囲む必要がある。
上記のコードを例にするとHello worldの部分## ターミナルで結果を表示させてみる
`$ ruby 記述したファイル名`
## 文字列型(Strin
return、 break、nextの違い
「フォームから入力された値が不正だった場合にエラーメッセージを表示しよう」というメソッドの中で、「もし、このケースであればすぐに次の処理に移りたい」というときその行で「return」させてみたのですがそれだとメソッド自体から離脱してしまい次の行の処理ができなくなってしまったので別の方法を探してみました。
## return
その時のコードはこのような形
“`ruby
def hoge
error_messages = []
CSV.parse(tsv_text, headers: true, col_sep: “\t”) do |row|
error_messages << "shop_id:#{row["shop_id"]}は存在しないIDです" if Shop.find_by(id: row["shop_id"]).blank? error_messages << "user_id:#{row["user_id"]}は存在しないIDです" if User.find_by(id: row["user_id"]).blank? error_mes
Ruby | Qiita API で自分の記事全てを編集してリンクを追加したスクリプトの例
# 概要
自分の記事全てを取得し、元のテキスト本文にテキストを追加して編集リクエストを続けていく。
ちなみに2000記事ほどを連続で編集しようとすると、途中で制限されたのか、Fobbiden扱いになった。
# コード
“`rb
require ‘net/https’
require ‘uri’
require ‘json’uri = URI.parse(“https://qiita.com/”)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = truerequest_header = {‘Content-Type’ =>’application/json’, “Authorization” => “Bearer #{ENV[‘TOKEN’]}”}
round = 0
# 100はQiita APIのページめくりのMAX
(1..100).each do |i|
get_url = “https://qiita.com/api/v2/users/#{ENV[‘USER_ID’]}/items?pag
【Ruby】APOD APIで毎日更新される宇宙写真を保存する
# はじめに
NASAのAPIでAPODというのがあって、これが毎日宇宙写真を更新していると知り、デスクトップの背景に使いたいと思ったのがきっかけでした。https://apod.nasa.gov/apod/lib/about_apod.html
https://apod.nasa.gov/apod/archivepix.html
### 完成形
1. 画像を指定したディレクトリに保存する
2. 指定した日付の宇宙写真のタイトルと説明文を表示する2の出力はこんな感じです
### 前提・gemなど
`Windows10`
Ruby `3.1.1`
gem `nasa_apod`, `open-uri`, `date`# 手順
## 1. NASAのAPIキーを生成する
APIキーを生成します。名前とメールアドレスを登録すれば取得
windows10でvagrant(ubuntu20.04)を使いrails6のローカル開発環境を構築する
## はじめに(経緯など)
macのローカル開発環境で動かしていたものを、windows上でも動かしたかったのでやってみた。
いろいろな記事を参考にまとめたものになるので、単に構築したいだけなら他の記事のほうがさくっとできるかもしれない。
初学者の自分が書いていいものか迷ったが、このへんの情報がかなり少なく感じたこともあって書いてみることにした。
自分の備忘録的要素が強いです。
ちなみに、作業時間の目安は1~2時間程度です。## 目次
– 必要なアプリのインストール
– vagrantのセットアップ
– vagrantfile書き換える
– 環境構築
– コンパイラおよび必要なツールをインストール
– rubyのインストール
– railsのインストール
– sqliteのインストール
– node.jsのインストール
– mysqlサーバーとクライアントのインストール
– 補足
– rails sで構築できているか確認
– macからgithubで持ってくる場合
– rails newで新しく作る場合
–
ローカルからDocker内に入るコマンド
Dockerでの開発環境が終わり、Railsの基本であるモデルやコントローラー、ビューを作成するコマンドを入力しようとしたが、ターミナルで
homesというコントローラ作成のコマンドを入力すると
“`言語:ターミナル
rails g controller homes
“`このようなエラーが出た。
Rails is not currently installed on this system. To get the latest version, simply type:
sudo gem install rails
You can then rerun your “rails” command.ローカルでこのコマンドしてもダメだと気づき、ドッカー内に入らないといけないと認識した。
そこで調べたところ、下記サイトに行きついた。
https://qiita.com/Keitaroooo/items/a30bf4eb9310d7b3f7cdこのサイトにある通りに進めた。
ドッカー内に入る方法は2つ
一つ目は
# dockerコマンド“`言語:ターミナル
dock
Ruby on Railsでアプリを作る準備をする
毎回どうだっけと忘れてしまうので、Ruby on Railsのアプリを立ち上げるところまでをまとめました。備忘録です。
## railsをインストールする
Bundlerのインストール
“`
gem install bundler
“`
Railsのインストール
“`
gem install rails
“`## rails new コマンドでアプリケーション作成の準備
webpackerをインストールする
“`
rails webpacker:install
“`
rails new コマンド
cdコマンドでPC上のアプリを作成したいディレクトリに移動し
“`
rails new アプリケーション名
“`
成功した場合、ターミナルに以下のように表示されます。
※rail
【Ruby翻訳】実務でリーダブルコードはどう役に立つのか ~Part1~
# はじめに
どうも、最近未経験からエンジニア転職をしたもきおです。
現役エンジニアの方にオススメされる本で一番紹介されると言っても過言ではない本が「リーダブルコード」。私自身も未経験時代から読んでみたはいいものの後半にいくにつれ「あれ?思ったよりムズくね?初心者向けじゃないやん」と思い本を閉じてしまいました。
今回入社後改めてCTOにおすすめしていただき、読み切ったのでここでアウトプットしていきたいと思います。
## そもそもなぜ読むのが難しいと感じるのか「リーダブルコード読むのが難しいとか何いってんの??」という方はこの章を読む必要がないかなと思いますが少なからずこの本が難しいと感じる人は一定数いるのかなと思っております。
この本を自分が難しいと感じた理由としては2点。
1.サンプルコードがJavaScriptやC+
Ruby で楽しいルーレット
# この記事は?
ターミナル上で気軽にルーレットを楽しめるスクリプトを Ruby で実装します。

# 実装
“`rb:roulette
#! /usr/bin/env ruby
def clear_line
print(“\e[A\e[K”)
enddef blink(item)
red, yellow = 31, 33
[red, yellow, red, yellow].each_with_index do |color, i|
if i > 0
sleep(0.2)
clear_line
end
puts(“\e[#{color}m#{item}\e[0m”)
end
end# 実行中のスクリプト
Rubyで通信を伴うSPAを構築してみました
# 前回までのあらすじ
[前回の記事](https://qiita.com/keyasuda-2/items/ac6e4ff4f64ab10c5ae5)では、[RubyのWebAssemblyポート](https://github.com/ruby/ruby.wasm)を使いSPA(single-page application)を構築するためのパッケージを開発し、[TodoMVC](https://todomvc.com/)を[移植しました](https://github.com/keyasuda/bormashino-todomvc)。# はじめに
TodoMVCは通信を伴わずブラウザ上のみで完結するアプリケーションだったため、構築用パッケージ”[Bormaŝino](https://github.com/keyasuda/bormashino)”は特に通信系の機能は持っておらず、[jsモジュール](https://github.com/ruby/ruby.wasm/tree/main/ext/js#ruby-extension-to-manipulate-javascript
authenticate_user!メソッドの使い方
## どんなメソッドか?
ログイン状態によって表示するページを切り替えるメソッドです。
ログインしていないユーザーを、ログイン画面に遷移したい場合に使います。
before actionで呼び出すことにより、コントローラーのアクションを実行する前に、ユーザーがログインしていなければログイン画面に遷移することができます。“`ruby
before action authenticate user!
“`## onlyの後にアクションを指定した場合の例
“`ruby
before action authenticate user!, only: [:new, :edit]
“`
上記の場合、ログインしていないユーザーがnewアクションとeditアクションを実行した場合のみ、ログイン画面に遷移することができます。
only以外にもexpectの後にアクションを指定することで、ログインしていないユーザーが指定したアクション以外を実行した場合に、ログイン画面へ遷移させることもできます。
Linuxコマンド一覧
# Linuxについて
LinuxとはOSの一種であり、『OS』とはオペレーティングシステムの略である。
OSはソフトウェア(アプリなど)とハードウェア(記録・保管装置)を繋ぐ役割があり、OSが機能しているからこそ閲覧や保存が正常に行われる。MacやWindowsのOSと違い、無料のオープンソースとして扱えることができ、Linuxをベースとして誰でも開発・改良が行えるのが特徴としてある。
ユーザー権限が厳しく管理されているので、安全性の高いサーバとして活用できる。# Linuxコマンド一覧
| コマンド|内容|
|:———–:|:————:|
| pwd| カレントディレクトリのパスを表示するコマンド |
|ls|ディレクトリやファイルの一覧を表示するコマンド|
|cd|カレントディレクトリから別のディレクトリに移動するコマンド|### Rubyで使うコマンド一覧
| コマンド|内容|
|:———–:|:————:|
|rails “`_6.0.0_“` new アプリケーション名|Railsで新規アプリ
Docker を使ってRuby on Railsの開発環境を構築(M1チップのMac)
M1 Macbookを使ってポートフォリオを作ろうと思い、Virtual Boxで開発環境を作成しようとするとVirtual Boxが使えないことが発覚したので、Dockerを使って開発環境を構築しようとした。
しかし、色んなサイトの作成方法を真似しても上手くいかず、Dockerの公式ドキュメントを参考にしたところ、Yay! You’re on Rails!の画面を出すことができた。
手こずってしまった原因がDockerへの理解不足だったため基本的な概念を備忘録として記載しようと思う。
表現が不適切なところも多々あると思うので、ご指摘くだされば幸いです。まずはイメージ図を頭に入れる

引用
https://coinbaby8.com/docker-beginner.htmlDocker
RubyのSymbol(シンボル)とは?文字列とは何が違うのか
Rubyでは全ての値はオブジェクトのため、一見ただの数値に見えてもそれは`Integer`クラスのオブジェクトです。
そこで`methods`メソッドを使って、そのオブジェクトが所属する`Integer`クラスのメソッドを見てみたいと思います。“`irb:irb
irb(main):006:0> 123.class
=> Integer
irb(main):007:0> 123.methods
=> [:-@, :**, :<=>, :upto, :<<, :<=, :>=, :==, :chr, :===, :>>, :[], :%, :&, :inspect, :*, :+, :ord, :-, :/, :size, :succ, :<, :>, :to_int, :coerce, :to_s, :to_i, :to_f, :divmod, :to_r, :fdiv, :modulo, :remainder, :abs, :magnitude, :integer?, :floor, :ceil, :round, :truncate, :^, :odd?, :even?, :a