More Related Content
Similar to 最近のRails事情 - 4.1! (20)
最近のRails事情 - 4.1!
- 1. 最近のRails事情 - 4.1!
author: ‘@ke_tachibana’
about: gem ‘rails’, ‘4.1.0.beta1’
generated_by: ‘slideshow(s9) gem (https://github.com/slideshow-s9/slideshow)’
- 3. 対応するコマンド
rails, rake, rspec, cucumber, testunitあたり
つまり、このへんが高速起動する(2回目から)
rails console
rails generate
rake db:migrate
rake routes
rake db:seed
rspec spec/models/foo.rb
実際1.5秒が0.3秒くらいになった
- 5. 使い方
$ spring binstub rspec # ./binにrspecコマンドが出来る
$ bin/rspec # bundle execとspringを通してrspecを実行する
railsコマンドはbin/を付けなくても良い模様
rakeコマンドはプロジェクト生成時にbinstubされている模様
direnv (https://github.com/zimbatm/direnv) などを使えば、railsディレクトリに入っ
た時だけ./binをPATHに追加したりできる
- 12. ActiveRecordにenumフィールドが
class Conversation < ActiveRecord::Base
enum status: [ :active, :archived ]
end
conversation.archived! # statusをarvhivedにする
conversation.status = 'archived' # 同じくstatusをarchivedにする
conversation.status = 'foo' # ArgumentError: 'foo' is not a valid status
conversation.active? # => false statusがactiveかどうか
conversation.status
# => “archived” 文字列で返される
conversation.status_before_type_cast # => 0 DBの生の値
Conversation::STATUS # => { "active" => 0, "archived" => 1 }
Conversation.archived # => ActiveRecord::Relation statusがarchivedなものだけのscope
- 14. 属性名を指定するだけで”pretty”なURLが作れる
class User < ActiveRecord::Base
to_param :name
end
index.erb:
<% user = User.new(name: 'myname') %>
<%= link_to 'Show User', user %>
↓
<a href="/users/1-myname">Show User</a>
先頭にidが付くので、String#to_iの仕様により User.find(params[:id]) はそのまま動く
- 17. 便利メソッド追加(ActiveSupport)
マッチする文字を削除する String#remove
'My name is FOO'.remove(/s/) # => 'MynameisFOO'
Dateが属する週、月、四半期、年の範囲をRangeで
day = Date.new(2014,
day.all_week
# =>
day.all_month
# =>
day.all_quarter # =>
day.all_year
# =>
1, 15)
Mon, 13
Wed, 01
Wed, 01
Wed, 01
Jan
Jan
Jan
Jan
2014..Sun,
2014..Fri,
2014..Mon,
2014..Wed,
19
31
31
31
複数のキャッシュを一度にfetchするfetch_multi
Rails.cache.write(:a, 1)
Rails.cache.write(:b, 2)
Rails.cache.fetch_multi(:a, :b) # => [1, 2]
Jan
Jan
Mar
Dec
2014
2014
2014
2014