Rails4 RC1 released!
Riding Rails: Rails 4.0: Release Candidate 1 released!
これ見て知りましたが、今Rails Confやってるんですね。
little as 3-4 weeks.
ということで、もうすぐ正式版のreleaseですね。
Rails4 RC1 released!
Riding Rails: Rails 4.0: Release Candidate 1 released!
これ見て知りましたが、今Rails Confやってるんですね。
little as 3-4 weeks.
ということで、もうすぐ正式版のreleaseですね。
$ spork Using RSpec Preloading Rails environment uninitialized constant ActiveModel::Observing (NameError) /Users/rochefort/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/spork-0.9.2/lib/spork/app_framework/rails.rb:56:in `preload_rails' /Users/rochefort/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/spork-0.9.2/lib/spork/app_framework/rails.rb:7:in `preload' /Users/rochefort/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/spork-0.9.2/lib/spork/test_framework.rb:134:in `block in preload' /Users/rochefort/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/spork-0.9.2/lib/spork.rb:62:in `exec_prefork' /Users/rochefort/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/spork-0.9.2/lib/spork/test_framework.rb:120:in `preload' /Users/rochefort/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/spork-0.9.2/lib/spork/run_strategy/forking.rb:25:in `preload' /Users/rochefort/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/spork-0.9.2/lib/spork/runner.rb:74:in `run' /Users/rochefort/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/spork-0.9.2/lib/spork/runner.rb:10:in `run' /Users/rochefort/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/spork-0.9.2/bin/spork:10:in `<top (required)>' /Users/rochefort/.rbenv/versions/2.0.0-p0/bin/spork:23:in `load' /Users/rochefort/.rbenv/versions/2.0.0-p0/bin/spork:23:in `<main>'
sporkするとエラー。
とりあえず、ぐぐってみると
Rails 4 support · Issue #223 · sporkrb/spork
が出てきましたが、同様のことをやっても解決しません。
ふとgem search spork --pre してみると
1.0.0rc3 が存在したので、Gemfileで同バージョンを指定してinstallするとうまく稼働しました。
原因は、ActiveModel::Observing が別gemになったからだと思うのですが
1.0.0rc3のソースを見るとrails.rbのソースが無くなってます。
version.txtをみると1.0.0rc0で対応したっぽいです。
久しぶりにrails-footnotesをRails4で実行してみたら
エラーとなった。
ActiveRecord::StatementInvalid TypeError: nil is not a symbol: SELECT name FROM sqlite_master WHERE type = 'table' AND NOT name = 'sqlite_sequence' AND name = "schema_migrations"
調べてみたら、すでにpull requestが上がっていた。
取り込まれたら試してみよう。
rails-footnotes breaks Rails 4 application on boot by rrooding · Pull Request #90 · josevalim/rails-footnotes
github見てみると色々変わってそうだ。
そもそもこれ、josevalimさんの作品だったのか。
・josevalim/rails-footnotes · GitHub
・rails footnotes - rochefort's blog
Riding Rails: Strong parameters: Dealing with mass assignment in the controller instead of the model
Rails4のMass Assignment対策としてStrong parametersを利用するとのこと。(既にgem化されている)
google readerが新しいfeedを取ってきてくれてないので
全然気づいてませんでした。
(padrino使ってたら、activesupport3.2.3が入って驚いた)
parameterをsliceして使うこともあるから
model側でなくcontroll側で制御する。
sampleが分かりやすいんだけど、
person_paramsなかで許可するパラメータを設定している。
class PeopleController < ActionController::Base # This will raise an ActiveModel::ForbiddenAttributes exception because it's using mass assignment # without an explicit permit step. def create Person.create(params[:person]) end # This will pass with flying colors as long as there's a person key in the parameters, otherwise # it'll raise a ActionController::MissingParameter exception, which will get caught by # ActionController::Base and turned into that 400 Bad Request reply. def update redirect_to current_account.people.find(params[:id]).tap do |person| person.update_attributes!(person_params) end end private # Using a private method to encapsulate the permissible parameters is just a good pattern # since you'll be able to reuse the same permit list between create and update. Also, you # can specialize this method with per-user checking of permissible attributes. def person_params params.require(:person).permit(:name, :age) end end
nested parametersの実装がまだなのと、
Yehudaさんが標準的なformの場合、自動的に設定するような仕組みを作ろうとしてくれてるっぽい。