Ruby on rails Rails引擎是否应该附带environment.rb?

Ruby on rails Rails引擎是否应该附带environment.rb?,ruby-on-rails,rails-engines,Ruby On Rails,Rails Engines,我最近创建了我的第一个Rails引擎。/config中只有routes.rb-noenvironment.rb或application.rb或类似内容 当我安装rspec railsgem并试图运行我的规范时,我得到一个错误,说它找不到environment.rb,这并不奇怪,因为environment.rb不存在 令我困惑的是,我掌握的证据告诉我,两件事中的一件肯定是这样的: 1) Rails引擎不附带环境.rb,您需要手动创建环境.rb,应用程序.rb,等等这似乎不太可能。 2) Rails

我最近创建了我的第一个Rails引擎。
/config
中只有
routes.rb
-no
environment.rb
application.rb
或类似内容

当我安装
rspec rails
gem并试图运行我的规范时,我得到一个错误,说它找不到
environment.rb
,这并不奇怪,因为
environment.rb
不存在

令我困惑的是,我掌握的证据告诉我,两件事中的一件肯定是这样的:

1) Rails引擎不附带
环境.rb
,您需要手动创建
环境.rb
应用程序.rb
,等等这似乎不太可能。

2) Rails引擎确实附带了一个
环境.rb
,但是我的引擎由于任何原因都没有这似乎也不太可能。不过,我对这个涉及引擎中
环境.rb
的答案感到困惑:


所以我的问题是:Rails引擎是否应该附带一个
环境.rb
,如果没有,如果您想要/需要,您应该如何创建一个呢?
Rails引擎可能有环境文件,但不需要它们。我建议您不要这样做,因为您的应用程序可能会安装在另一个应用程序中(作为gem),这使得在mainrails应用程序中配置引擎非常困难


更可取的做法是使用可以在主rails应用程序中配置的yml文件,并允许该rails应用程序实现特定于环境的配置。这并不意味着你不能在你的rails引擎中有一些基于环境文件的默认设置,而是说,它通常使允许外部配置变得更容易。

使用虚拟应用程序的
environment.rb
文件

ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../test/dummy/config/environment", __FILE__)
...
要设置RSpec,请执行以下操作:

将以下内容添加到
spec\u 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
#这将包括规范中的路由帮助程序,以便我们可以使用
#_路径等,以到达路线。
config.include::Engine.routes.url\u helpers

希望能有帮助。

成功了,谢谢。我以前不明白“虚拟”是一个真实的东西,而不仅仅是一个像“foo”或“your app name here”这样的占位符。另外,我对你的答案做了几个小版本,因为我必须调整你的路径,以使我的规范能够真正运行。