0

この質問は、cells gemがFile.join('app'、'cells')を使用してテンプレートディレクトリを指定するために発生しました。Railsをデーモンとして実行するまでは正常に機能します(scripts / server -d)。デーモンはディレクトリを/に切り替え、セルのテンプレートパスが間違った絶対パスを指しているままにします。

私の解決策は、デフォルトのパスをFile.join(RAILS_ROOT、'app'、'cells')に設定することでした。これはRailsで機能しますが、RAILS_ROOTが定義されていないため、プラグインの単体テストは失敗します。...の使用File.join(File.dirname(__FILE__),'..'も機能しますが、約6レベルの「..」が必要です。これは間違っているようです。

だから私の質問は、Railsプラグインの「app」の下にあるディレクトリへのパスを指定する適切な方法は何ですか?または、デーモン化Railsが相対パスを見つけられない原因となる他の問題がありますか?

4

2 に答える 2

1

プラグインからイニシャライザに変更を移動することをお勧めします。イニシャライザで、File.join('app'、'cells')を使用するメソッドをオーバーライドします。これにはいくつかの利点があります。

  1. サードパーティのコードを直接変更していないため、アップグレード時に変更を再適用することを心配する必要がない可能性が高くなります。
  2. プラグイン自体を変更しないことにより、プラグインの単体テストは引き続き合格します。
  3. あなたは私が正しい解決策だと思うRAILS_ROOTを使うことができます。
于 2010-03-19T04:38:04.357 に答える
0

For those who had trouble deciphering this answer, here is what worked for me:

Create a file config/initializers/cells.rb

in it put:

Cell::Base.view_paths=[
  File.join(RAILS_ROOT, 'app', 'cells'),
  File.join(RAILS_ROOT, 'app', 'cells', 'layouts')
]

Hope this helps

于 2010-11-04T04:36:52.707 に答える