私のRuby 1.9.2アプリケーションのバグ/機能が表示されています。 ビュー(ルビファイルではない)への変更は、サーバーの再起動が必要です。最初はRailsアプリでこれに遭遇しましたが、最小のSinatraアプリでも同じことをテストしました。Rails 3.1変更されていない再読み込み
私はこれが私の手順です
# testapp.rb
require 'sinatra'
get '/' do
[0,1,2].to_s #change this to [0,1].to_s
end
を実証するためのシンプルなアプリ含まれます:ページ
ruby testapp.rb
(私のために薄いサーバを実行)- 負荷をファイルを編集してビューを編集する
- ページをリロードする(変更はありません)
- サーバー
- を殺すが、私は過去数ヶ月のためのRails 3の上のRuby 1.8.7で開発してきたサーバー(今目に見える変化)
を再起動します。任意のビューの変更でサーバーを再起動すると、開発が大幅に遅くなります。
私はthis SO threadを準備しましたが、私のバージョンのRails(3.1.0 rc4)では、設定変数はすでにその回答ごとに設定されています。さらに、Sinatraを使用してエラーを再現することもできますので、そのようには見えません。
誰でもこの問題を解明できますか?
ルビーバージョン:ルビ1.9.2p180(2011-02-18リビジョン30909)[x86_64の-のLinux] サーバ:薄い1.2.11(またシナトラ/ WEBrickにしてこれをテストした)
EDIT 7/13 、Clarification Sinatraの問題は別の問題です。Sinatraのソースの再読み込みは、デフォルトでは無効になっています。私は行動テストするためにこのコードを使用:views/test.haml
:これで
require 'sinatra'
require 'sinatra/reloader'
require 'haml'
set :views, 'views'
get '/' do
end
get '/test' do
haml :test
end
を、私はファイルを作りました。サーバーが実行されている間に変更すると、はにページがリロードされたときに変更が表示されます。なぜRailsはRubyの1.9.2に3.1 ビューをリロードしない:このうち
未解決問題を指し示すためのTiredpixelのおかげ?私はロードするルビーファイルを取得できますが、hamlやerbファイルは取得できません。私はバグが実際に修正されたかどうかを確認するためにサーバを再起動することになります。 (受け入れ答えの私のコメントからコピー)
EDIT/SOLUTION:
問題は、我々はこれが正しい確認した後でもconfig/environments/development.rb
config.cache_classes = false
にあったが、我々はまだ問題がありました。さらに下のファイルで、私たちは持っていた:
config.threadsafe!
これがtrueに以下の3つのフラグを設定されているん何:config.allow_concurrency
、config.preload_frameworks
、および(驚き!)config.cache_classes
を。
修正するには暗黙的に上書きされないようにconfig.threadsafe!
をconfig.cache_classes
より上に移動します。
新しい3.1.0 rc4アプリを作成して[github](https://github.com/ezkl/reload_test)にプッシュしました。これには、単一のメソッドとルートを持つコントローラがあります。私は1.9.2-p180を走っています。 'thin start'を実行すると' http:// localhost:3000/'をブラウズし、' app/views/pages/index.html.erb'に変更すると、ビューが正しく読み込まれます。 –
これを押していただきありがとうございます。どうやらconfig.threadsafe!の問題だったのですが、 'config.cache_classes'を書きました。 –