只是出于好奇……在我之前的帖子Rails3.1 engine: can't get SLIM or HAML to work in test/dummy app我问在哪里告诉 Ruby 在我的test/dummy
应用程序中使用一些 gem。
(显而易见的?)答案是将其放入我的引擎的 Gemfile 中。这行得通,但它让我有点不舒服,因为在 Yehuda Katz 的帖子澄清 .gemspec 和 Gemfile 的角色中,他提到......
...在开发 gem 时,Gemfile “gem 的 Gemfile 应该包含 Rubygems 源和单个 gemspec 行”。
另一方面,在我的 Engine 的 Gemfile(使用 Rails 生成rails plugin new my_engine
)中有:
# jquery-rails is used by the dummy application
gem "jquery-rails"
所以这似乎是对的。更新:不,它没有!看看我下面的回答...
尽管如此,在 StackOverflow 上的其他地方,我看到解决方案据说只需要所需的 gem config/application.rb
,而 https://stackoverflow.com/questions/5159607/rails-engine-gems-dependencies-how-to-load-them -into-the-application 它被告知最好放入lib/<your_engine>/engine.rb file
.
这是我的想法:为什么test/dummy
应用程序不简单地自动要求文件中指定的所有 Gems .gemspec
?add_dependency
我们甚至通过显式使用and来告诉 gem,哪些 gem 用于生产,哪些用于开发模式add_development_dependency
,所以我看不出有什么不这样做的理由test/dummy
。
所以这是最后一个问题:我必须在哪里告诉 Ruby 在我的test/dummy
应用程序中使用 gem?我不想强迫 Ruby 在主机应用程序中也使用宝石。