2013-02-22 73 views
4

我最近创建了我的第一个Rails引擎。在/config唯一的事是routes.rb - 没有environment.rbapplication.rb或类似的东西。Rails引擎是否应该带有environment.rb?

当我安装了rspec-rails宝石想跑我的规格,我得到了一个错误说,它无法找到environment.rb,这并不奇怪,因为environment.rb不存在。

混乱的事情对我来说是证据我已经告诉我的两件事情一定是这样的:

1)Rails的引擎拿出一个environment.rb,你就有望创造手工制作。 这似乎不太可能。

2)Rails的引擎配备了environment.rb,但我的引擎发生丢失它无论出于何种原因。 这似乎也不太可能。我很困惑,不过,这个答案是指environment.rb在发动机:Testing Rails 3.1 mountable engine with Rspec

所以我的问题是:都应该拿出一个environment.rb Rails的引擎,如果没有,怎么是你应该建立一个如果你想/需要一个?

回答

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 

希望有所帮助。

+0

这样做,谢谢。在此之前我不明白“虚拟”是实际的东西,不仅仅是像“foo”或“your-app-name-here”这样的占位符。另外,我为你的答案做了几个小版本,因为我必须调整你的路径才能让我的规格真正运行。 – 2013-02-22 18:40:46

0

Rails引擎可能有环境文件,但他们不需要它们。我会建议他们,因为你的应用程序可能会被挂载(作为一个宝石)在另一个应用程序中,这使得从主轨应用程序中配置引擎非常困难。

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

相关问题