Railsでapp以下の変更をSpringが検知しない問題を解決した(?)

最近またSpring を使い始めたんですが、相変わらずモデルやコントローラ を変更してもSpringは検知しませんよね?みんなどうしているんだろう? files in the app directory are not being watched · Issue #115 · rails/spring このIssueによると、そもそもRailsのリロードはコストが高いため、 Springはリロードが必要ない設計にしているそう。 うーん、、、とは言ったものの実際問題、モデルのメソッドを修正した後 テストを走らせても、変なエラーが出て、手動でリロードさせると直ると いうことが多々あります。 ちなみに手動リロードはtouch config/application.rbでイケます。thx! loading... Zeus を使ってた頃はとても快適だったので、Zeusに戻る準備までし始めま したが、READMEのWatching files and directories やソースを読んで、 自動リロードさせる方法を見つけました。 config/spring.rbを作って、以下を書けばOKです。 Spring.watch 'app' 他にもwatchしたいディレクトリやファイルがあればこのように書きます。 Spring.watch 'app', 'lib' ◆適用前 $ bundle exec spring status Spring is running: 56071 spring server | awesome_events | started 25 secs ago 56072 spring app | awesome_events | started 25 secs ago | development mode $ touch app/models/user....

2014-07-06 (Sun) · masutaka

Railsのpreloader springを試してみた

Rails使いよspork, zeusからspringへ!|Act as Professional - hiroki.jp ようやくspring を試しました。 まだzeus からは乗り換えられないかなー。開発は活発みたいなので、もう 少ししたらまた試します。以下、詳細。 テストを走らせたら、盛大にレッドになった。ちょっと調べたところ、 1と2要因がほとんど。他にもあったかも知れない。3も困るかなあ。 1. letではhogeは使えない。hoge_idを使う。 ※ この例ではLifeモデルはUserモデルのhas_oneです。 以下のように直す必要がありました。まあ、直せば良いんですけどね。 # 修正前 let(:taro) { FactoryGirl.create :taro_full_profile } let(:life_1) { FactoryGirl.build :life_1, user: taro } # 修正後 let(:taro) { FactoryGirl.create :taro_full_profile } let(:life_1) { FactoryGirl.build :life_1, user_id: taro.id } 2. スタブが使えない。 これが致命的でした。beforeとかでスタブを設定しても効きませんでした。 before { Life.any_instance.stub(:fun?).and_return false } 3. モデルにbinding.pryを追加したらspringを再起動する必要あり。 手動でbundle exec spring stopする必要がありました。

2013-03-24 (Sun) · masutaka