4

我最近创建了我的第一个 Rails 引擎。唯一的事情/configroutes.rb- 没有environment.rbapplication.rb类似的东西。

当我安装rspec-railsgem 并尝试运行我的规范时,我收到一个错误,说它找不到environment.rb,这并不奇怪,因为environment.rb不存在。

令我困惑的是,我所拥有的证据告诉我必须是以下两件事之一:

1) Rails 引擎附带 an environment.rb,您需要手动创建environment.rb,application.rb等。这似乎不太可能。

2)Rails 引擎确实带有environment.rb,但我的引擎碰巧因为某种原因缺少它。这似乎也不太可能。不过,我对引擎中提到的这个答案感到困惑environment.rbTesting Rails 3.1 mountable engine with Rspec

所以我的问题是:Rails 引擎是否应该带有一个environment.rb,如果没有,如果你想要/需要一个,你应该如何创建一个?

4

2 回答 2

4

使用虚拟应用程序的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

希望有帮助。

于 2013-02-22T18:33:06.917 回答
0

Rails 引擎可能有环境文件,但它们不需要它们。我建议不要使用它们,因为您的应用程序可能会(作为 gem)安装在另一个应用程序中,这使得从主 rails 应用程序中配置引擎变得非常困难。

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

于 2013-02-22T18:32:42.550 回答