簡體   English   中英

Rails引擎是否應該帶有environment.rb?

[英]Are Rails engines supposed to come with an environment.rb?

我最近創建了我的第一個Rails引擎。 /config唯一的東西是routes.rb - 沒有environment.rbapplication.rb或類似的東西。

當我安裝了rspec-rails gem並嘗試運行我的規范時,我收到一條錯誤,說它無法找到environment.rb ,這並不奇怪,因為environment.rb不存在。

對我來說令人困惑的是,我所提供的證據告訴我兩件事情中的一件必須是這樣的:

1)Rails引擎沒有帶有environment.rb ,你需要手動創建environment.rbapplication.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM