[英]Are Rails engines supposed to come with an environment.rb?
我最近創建了我的第一個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
: 使用Rspec測試Rails 3.1可安裝引擎
所以我的問題是: Rails引擎是否應該帶有environment.rb
,如果沒有,如果你想要/需要一個,你應該怎么創建一個?
使用虛擬應用程序的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
塊中添加以下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
希望有所幫助。
Rails引擎可能有環境文件,但它們不需要它們。 我建議不要使用它們,因為你的應用程序可能會在另一個應用程序中安裝(作為gem),這使得在主軌應用程序中配置引擎變得非常困難。
建議您使用可在主rails應用程序中配置的yml文件,並允許rails應用程序實現特定於環境的配置。 這並不意味着您不能擁有一些基於rails引擎內部環境環境文件的默認值,而是通常會讓生活更容易進行外部配置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.