我最近创建了我的第一个Rails引擎。 /config
中唯一的问题是routes.rb
- 没有environment.rb
或application.rb
或类似的事情。
当我安装rspec-rails
gem并试图运行我的规格时,我收到一条错误消息,说找不到environment.rb
,这并不奇怪,因为environment.rb
没有存在。
对我来说令人困惑的是,我所提供的证据告诉我必须有以下两种情况之一:
1)Rails引擎不附带environment.rb
,您需要手动创建environment.rb
,application.rb
等。 这似乎不太可能。
2)Rails引擎做带有environment.rb
,但我的引擎碰巧因任何原因而错过了它。 这似乎也不太可能。我很困惑,这个答案引用了引擎中的environment.rb
:Testing Rails 3.1 mountable engine with Rspec
所以我的问题是: Rails引擎是否应该带有environment.rb
,如果没有,如果你想要/需要的话,你应该怎么创建一个?
答案 0 :(得分:3)
使用虚拟应用的environment.rb
文件。
设置RSpec:
将以下内容添加到您的spec_helper.rb
文件中。
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../test/dummy/config/environment", __FILE__)
...
添加引擎根也很有帮助。
ENGINE_RAILS_ROOT = File.join(File.dirname(__FILE__), '../')
如果您想要访问引擎的路由助手,请在RSpec.configure
块中添加以下内容。
# This will include the routing helpers in the specs so that we can use
# <engine>_path, etc., to get to the routes.
config.include <RailsEngine>::Engine.routes.url_helpers
希望有所帮助。
答案 1 :(得分:0)
Rails引擎可能包含环境文件,但它们不需要它们。我建议不要使用它们,因为你的应用程序可能会在另一个应用程序中安装(作为gem),这使得从主轨应用程序中配置引擎变得非常困难。
更可取的做法是使用可在主rails应用程序中配置的yml文件,并允许rails应用程序实现特定于环境的配置。这并不意味着您不能拥有一些基于rails引擎内部环境环境文件的默认值,而是通常会让生活更容易进行外部配置。