ためすう
Rails5 で jQuery を使う
2019-04-26やったこと
Rails5 で jQuery を利用できるようにしました。
確認環境
$ ruby --version
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin17]
$ rails --version
Rails 5.2.3
実施
Gemfile に追加
Gemfile
gem "jquery-rails"
$ bundle install
jquery の読み込み
app/assets/javascripts/application.js に下記を追加します。
//= require jquery
//= require jquery_ujs
jQuery を使う
view ファイルで jQuery を使います。
<div id="test">font</div>
<script>
$("#test").css("font-size", "20px")
</script>
これで jQuery が利用できるようになりました。
参考
Rails5 で Bootstrap4 をインストールする
2019-04-25やったこと
Rails5 で Bootstrap4 を設定する方法を調べました。
確認環境
$ ruby -v
ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-darwin17]
$ rails --version
Rails 5.2.3
調査
gem のインストール
どのバージョンか忘れましたが、今回より古いバージョンの時はインストールが必要だった気がしたのですが、元から入っているようです。
bootstrap-sass がインストールされていればOKです。
Gemfile.lock
bootstrap-sass (3.3.7)
autoprefixer-rails (>= 5.2.1)
sass (>= 3.3.4)
ここでちょっと注意です。 4系に対応するには、違うgemを使います。
gem | 対応バージョン |
---|---|
bootstrap-sass | 2 or 3系 |
bootstrap | 4系 |
このままではあまり面白くないので、4系を入れてみます。 インストール手順は github の通りですが、とにかくやってみます。
Gemfile
gem 'bootstrap', '~> 4.3.1'
$ bundle install
端折りますが、下記を参考にしてください。
ruby のバージョンを上げてから、bundle install でコケた時にやること – ためすう
ファイルの編集
ファイルの拡張子を scss にします
$ mv app/assets/stylesheets/application.css app/assets/stylesheets/application.scss
app/assets/stylesheets/application.scss
上記ファイルを編集して、bootstrap を読み込みます
@import "bootstrap";
Boostrap4 の機能を使ってみる
表示したい view ファイル
<div class="btn-group" data-toggle="buttons">
<label class="btn btn-primary active">
<input type="radio" name="options" id="option1" checked=""> Radio 1 (preselected)
</label>
<label class="btn btn-primary">
<input type="radio" name="options" id="option2"> Radio 2
</label>
</div>
※ もし反映されない時はサーバーを再起動などしてみてください(もちろん開発環境で)
最後に
もし、bootstrap-sass を使わないなら、削除しておいても良いかもしれませんね。
参考
Bootstrap 4 Cheat Sheet by Creative Tim and BootstrapBay
これ見ながらやると捗ります。
ruby のバージョンを上げてから、bundle install でコケた時にやること
2019-04-25やったこと
Rails5 で利用する Ruby のバージョンをあげた後、bundle install がコケた時のメモです。
確認環境
作業前
$ ruby -v
ruby 2.2.7p470 (2017-03-28 revision 58194) [x86_64-darwin16]
$ rails --version
Rails 5.2.3
作業後
$ ruby -v
ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-darwin17]
$ rails --version
Rails 5.2.3
実施
Ruby のバージョンを 2.2.7 -> 2.5.0 にした後、
bundler のインストール
$ bundle update
エラー抜粋
rbenv: bundle: command not found
The `bundle' command exists in these Ruby versions:
2.1.5
2.2.2
2.2.7
bundle コマンドが rbenv の 2.5.0 で利用できない状態だからです。
ということで、bundler を入れます。
$ gem install bundler
Fetching: bundler-2.0.1.gem (100%)
Successfully installed bundler-2.0.1
Parsing documentation for bundler-2.0.1
Installing ri documentation for bundler-2.0.1
Done installing documentation for bundler after 3 seconds
1 gem installed
bundler でコケる
$ bundle install
Traceback (most recent call last):
2: from /Users/xxxx/.rbenv/versions/2.5.0/bin/bundle:23:in `<main>'
1: from /Users/xxxx/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems.rb:308:in `activate_bin_path'
/Users/xxxx/.rbenv/versions/2.5.0/lib/ruby/2.5.0/rubygems.rb:289:in `find_spec_for_exe': can't find gem bundler (>= 0.a) with executable bundle (Gem::GemNotFoundException)
$ gem install bundler -v 1.16.1
これを実行して、もう1回 bundle install します。
nokogiri でコケる
$ bundle install
エラー抜粋
An error occurred while installing nokogiri (1.9.1), and Bundler cannot continue.
Make sure that `gem install nokogiri -v '1.9.1'` succeeds before bundling.
...
pkg-config could not be used to find libxml-2.0
Please install either `pkg-config` or the pkg-config gem per
gem install pkg-config -v "~> 1.1"
この gem を取り込めば OK そうです。
インストール後、bundle install は無事に終わりました。(やっていることの割に険しかった)
参考
Rails5 で利用する Ruby のバージョンを上げる
2019-04-24やったこと
Rails5 で利用する Ruby のバージョンをあげました。
確認環境
作業前
$ ruby -v
ruby 2.2.7p470 (2017-03-28 revision 58194) [x86_64-darwin16]
$ rails --version
Rails 5.2.3
作業後
$ ruby -v
ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-darwin17]
$ rails --version
Rails 5.2.3
実施
新しいバージョンの Ruby をインストール
ある gem を利用しようとしたら ruby のバージョンを上げろと言われたので
仕方なく上げることにしました。
今回は 2.5.0 に切り替えます。
利用するバージョンの切り替え
$ rbenv global 2.5.0
Railsプロジェクトの .ruby-version 更新
.ruby-version
2.5.0
数分嵌りました…
このファイルは rbenv が ruby のバージョン決めるときにみるやつです。
Gemfileを更新して、bundle install
Gemfile
ruby '2.5.0'
bundle 実行
$ bundle install
エラーがいっぱい出る可能性がありますが(Ruby のバージョンがこの記事と同じなら発生するかもです)
Google力でなんとか乗り切ってください。
2019/04/25 修正
発生したエラーの解決は別記事に切り出して、投稿後リンク貼ります…
下記に発生したエラーを解決した時の記事のリンクを貼ります。
Rails5 で ルーティングを設定する (基本編)
2019-04-24やったこと
Rails5 でルーティングを設定する方法を調べました。 今回の対象は基本だけに絞ります。
確認環境
$ ruby -v
ruby 2.2.7p470 (2017-03-28 revision 58194) [x86_64-darwin16]
$ rails --version
Rails 5.2.3
調査
現在設定されているルーティングは下記で確認できます。
$ rails routes
resources ルーティングを自動生成する
config.ru
resources :tasks
root を指定する
config.ru
root 'tasks#index'
/
にアクセスすると、tasksコントローラーのindexアクションが呼び出されます。
所感
ルーティングの resources なんかは、 rails の「設定より規約」を感じられるかもしれません。
- url が自動生成される
- url を解析して実行するアクションを決定する (基本ルールに則った形)
ドキュメントを見ると、色々な設定方法があり、痒い所に手が届きそうな気がします。
規約通り実装できるものに関しては、かなりシンプルにかけそうです。
参考
Ruby と Ruby on Rails で確認する環境
2019-04-23やったこと
Ruby と Rails のとあるAPIの動作を試すときに使う環境を調べました。
調査
irb (ruby のみ)
$ irb
irb(main):001:0> puts 'hello'
hello
=> nil
ちなみに irb は Interactive Ruby の略のようです。 どのディレクトリからも実行できて、ファイルも保存せずに試せます。
rails console
内部的に irb を使っているようです。(コードリーディングまでは出来てない)
$ rails c
実行例が下記です。
Railsチュートリアルで作成したサンプルアプリにて、コンソールを立ち上げました。 Userクラスが読み出せているのが分かると思います。 (Userクラスは Rails のモデルです)
Running via Spring preloader in process 58267
Loading development environment (Rails 5.1.6.2)
...
irb(main):002:0> User.first
User Load (1.0ms) SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT ? [["LIMIT", 1]]
=> #<User id: 1, name: "Example User", email: "example@railstutorial.org", created_at: "2019-03-29 03:48:50", updated_at: "2019-03-29 03:48:50", password_digest: "$2a$10$8CzQ9IXLNgrO4dT5cRKU1O41PJ3zJ.Wl41Vh/N/KWLl...", remember_digest: nil, admin: true, activation_digest: "$2a$10$GHz5AmbuxCBR0J0VrhOGMOuDPvWf4piIUV6y7AX8JTF...", activated: true, activated_at: "2019-03-29 03:48:50", reset_digest: nil, reset_sent_at: nil>
xxx.rb でターミナルで実行する (ruby のみ)
test.rb
puts 'test now'
$ ruby test.rb
出力結果
test now
vim 開いたまま実行する (ruby のみ)
vim で quickrun
を導入します
~/.vimrc に下記を追加
NeoBundle 'thinca/vim-quickrun'
さらに :NeoBundleInstall
test.rb
puts 'test now1'
puts 'test now2'
puts 'あああ'
:QuickRun
すれば、vim のペインが開き下記が出力されました。
test now1
test now2
あああ
さらに選択した行だけでも実行できました。
参考
Ruby と Ruby on Rails のドキュメント
2019-04-23やったこと
Ruby と Rails に触れる機会が増えたので、参考にするドキュメントを調査します。
調査
Ruby
github の README.md に記載があったリファレンスです。
Ruby on Rails
github の README.md に記載があったリファレンスです。
Rails Guide からこちらのリンクが貼られています。
↓ こちらは日本語に翻訳されているサイトもあります。
Ruby on Rails のソースコードを読む
2019-04-22やったこと
Ruby on Rails のソースコードを読む方法を調べました。
確認環境
$ ruby -v
ruby 2.2.7p470 (2017-03-28 revision 58194) [x86_64-darwin16]
調査
選択肢1
github から Ruby on Rails の ソースコードを落とす
GitHub - rails/rails: Ruby on Rails
この方法の難点は、(あまりないかもしれませんが)Rails の本体をいじって動作を確かめるということが出来なさそうなところです。
選択肢2
rails が install されているファイルから読む
ローカルで実行しているということは、Rails のソースコードもローカルのどこかにあると思われるので、インストールされているファイルから読みます。
今回は、こちらでやってみます。
インストールされているrailsを読む (選択肢2)
gem のインストール先確認
$ gem environment
出力 (一部抜粋)
INSTALLATION DIRECTORY: /Users/xxxxx/.rbenv/versions/2.2.7/lib/ruby/gems/2.2.0
上記のディレクトリからrailsを探したのですが、README.mdしかありませんでした。
/Users/xxxxx/.rbenv/versions/2.2.7/lib/ruby/gems/2.2.0/gems/rails-5.2.2/
どうやら Rails は個別の gem が集合して出来ているようです。
gem のインストール先に下記のディレクトリが存在していました。
rails のソースコードにあるディレクトリ
actioncable
actionmailbox
actionmailer
actionpack
actiontext
actionview
activejob
activemodel
activerecord
activestorage
activesupport
... (続く)
本来ならソースコードを変更して確かめたいところですが、どの gem がどういう役割なのか分かっていないので今日はこの辺で終わります。
Ruby の配列で、先頭、最後の要素を取得する
2019-04-22やったこと
Ruby の配列で先頭、最後の要素を取得する方法を調べました。
確認環境
$ ruby -v
ruby 2.2.7p470 (2017-03-28 revision 58194) [x86_64-darwin16]
調査
irb を起動します。
$ irb
irb(main):002:0> a = ["a", "b", "c", "d"]
=> ["a", "b", "c", "d"]
irb(main):003:0> a.first
=> "a"
irb(main):004:0> a.last
=> "d"
irb(main):005:0> a
=> ["a", "b", "c", "d"]
この確認から分かることは、first
last
で呼び出した後も、元の配列は変更されないということです。
元の配列も変更したいときは、shift
pop
を使います。
irb(main):007:0> a.pop
=> "d"
irb(main):008:0> a
=> ["a", "b", "c"]
irb(main):009:0> a.shift
=> "a"
irb(main):010:0> a
=> ["b", "c"]
参考
Ruby の定数、変数について
2019-04-16やったこと
Ruby での定数、変数について調べました。
下記について調べます。
- 定数
- ローカル変数
- グローバル変数
- インスタンス変数
- クラス変数
確認環境
$ ruby -v
ruby 2.2.7p470 (2017-03-28 revision 58194) [x86_64-darwin16]
定数
定数名は大文字アルファベットで始まる必要があります。
ABC = 'abc'
ローカル変数
ローカル変数名は「ruby」や「ruby」のように先頭が小文字アルファベットかアンダースコア()で始まる必要があります。
ruby = 'ruby_string'
_ruby = 'ruby_string'
グローバル変数
グローバル変数名は$から始まる必要があります。
$abc = 'abc'
インスタンス変数
インスタンスの中でだけ参照できる変数をインスタンス変数と言います。
「クラスインスタンス変数」というものもあるようですが、今回は割愛します。
class My
def initialize()
@length = 0
end
def length
@length += 1
end
end
p @length
c = My.new
p c.length
p c.length
c2 = My.new
p c2.length
実行結果
$ ruby test.rb
nil
1
2
1
attr_accessor を利用すると、インスタンス変数のセッター、ゲッターが定義されるようです。(今回は試しません)
クラス変数
@2つからはじまる名前で記述します。
class My2
@@length = 0
def printLen
@@length += 1
end
end
my2 = My2.new
p my2.printLen
p my2.printLen
my2_2 = My2.new
p my2_2.printLen
実行結果
$ ruby test.rb
1
2
3
参考
- パーフェクトRuby
- 【まとめ】インスタンス変数、クラス変数、クラスインスタンス変数 - Qiita