私はRailsエンジン/宝石になっているRails 3アプリを持っています。 このエンジンには、gemspecファイルの中に入れたgemの依存関係があります。Gemfileを使用してRails 3アプリでgemspecの依存関係を自動ロードする方法
私は新しい '親' Rails 3アプリを作成しました。私は自分のエンジンの宝石をGemfileに追加して、宝石の依存関係を自動的に '読み込み'したいと思っています。 bundle install
はgem依存関係をうまくインストールしますが、サーバーを起動するとアプリケーションが読み込まれないためクラッシュします。
s.add_runtime_dependency(%q<rails>, ["= 3.0.7"])
s.add_runtime_dependency(%q<acts_as_commentable>, [">= 3.0.1"])
s.add_runtime_dependency(%q<haml>, [">= 3.1.1"])
...と親のRails 3アプリケーションがGemfileに次の行があります:
source 'http://rubygems.org'
gem 'my_engine', :path => "~/src/gems/my_engine"
をしかし、私は次のエラーを取得する
例えばは、私のエンジンのgemspecは、これらの行が含まれています。
undefined local variable or method `acts_as_commentable'
from /home/user/src/gems/my_engine/app/models/account.rb:66:in `<class:Account>'
ただし、親レール3のGemfileにgem 'acts_as_commentable', '>= 3.0.1'
を追加するとappの場合、gemがロードされ、エラーが消えます。
私はRails 3.0.8を使用しています。
誰にも提案はありますか?私のエンジンのロード方法を変更する必要がありますか?
これが期待される動作であることを確認してくれてありがとう。便利なように聞こえる、再帰的なGemfilesのアイデアを持ったbundlerに関するクローズド(拒否された)問題があります:https://github.com/carlhuda/bundler/issues/49 – ndbroadbent
私にとっては、 /lib/my_engine.rb。例:https://github.com/krisleech/qwerty/commit/c1e82cef27013afc6a540412e101cc2b6aeb4898 – Kris