2012-06-15 11 views
5

レール私はlibの下にクラスを変更するとき、私はリロードがapplication.rbで初期化子

config.autoload_paths += %W(#{config.root}/lib 

だから、私のコードが再ロードされています。

しかし、自動ロードにconfig/initializersを追加しようとすると、コードが更新されないことに気付きました。

文字列クラスの拡張機能を作成している場合、コードを変更するたびにレールを再起動する必要があります。

お知らせください。

答えて

5

イニシャライザは、レールの起動時にのみロードされます(リロードされることはありません)。 config/initializersで触れたときは、毎回レールを再起動します。

もちろん、あなたのコードが/libで定義されていることを確認して、テストスイートを使用してコードが正常に動作することを確認することができます。

など。これはまだだけレールを開始するとき、あなたがより簡単にモジュールを開発し、テストすることができますロードされますもののlib/speaker.rb書き込み

module Speaker 
    def speak 
    puts "Ahum, listen: #{self.to_s}" 
    end 
end 

とあなたの初期化中に、あなたはその後、

class String 
    include Speaker 
end 

ような何かを行うことができます。

これが役に立ちます。

+1

ありがとうございます! – Abdo

3

初期化ファイルは、レールサーバーの起動時に一度だけロードされます。初期設定値が変更されると、サーバーを再起動します。 詳細については、レールinitialization guidesを参照してください。

変更

のオートリロード 'libに' あなたは自動車のlibファイルをリロードすることができます。 Follow Autoload and Reload lib directory on change

In Railsアプリケーションの設定:config.reload_classes_only_on_changeは、追跡されたファイルが変更された場合にのみクラスのリロードを有効または無効にします。デフォルトでは、オートロードパスのすべてを追跡し、trueに設定されます。 config.cache_classesがtrueの場合、このオプションは無視されます。

+0

これは私の質問についてです。私はサーバーを再起動したくなかった。私は自分のコードをデバッグするより良い方法を望んでいました。 – Abdo

+0

(私はちょうど-1を見た;それは私ではなかった)) – Abdo

+0

編集のためのpaukulありがとう –

関連する問題