2012-12-09 49 views
11

layout文件haml我想確定我們是否在我們的開發和構建環境。我們正在使用Middleman。如何知道代碼在什麼環境下運行?

我願做這樣的事情:

- if environment == 'development' 
    /Development Code 
    = javascript_include_tag "Dev.js" 

我試圖訪問Ruby的環境變量,以及自定義一個變量在config.rb文件,但沒有成功。

回答

28

你幾乎得到它的權利 - 你需要覈對的象徵,而不是一個字符串:

- if environment == :development 
    /Development Code 
    = javascript_include_tag "Dev.js" 

中間人還增加了development? and build? methods這可能是更容易使用:

- if development? 
    /Development Code 
    = javascript_include_tag "Dev.js" 

這也適用於ERB:

<% if development? %> 
<!-- Development Code --> 
<%= javascript_include_tag "Dev.js" %> 
<% end %> 
0

首先,如果可能的話,您應該將邏輯與數據分開。確定您的控制器中的環境,並切換髮送到視圖的數據(HAML佈局文件)。

通常情況下,您會在環境變量中設置一個標誌,並在您的代碼中從ENV訪問它。例如,西納特拉使得使用它們RACK_ENV符號裏面的代碼提供的開發/測試/生產環境:

 
:environment - configuration/deployment environment A symbol 
specifying the deployment environment; typically set to one of 
:development, :test, or :production. The :environment defaults to the 
value of the RACK_ENV environment variable (ENV['RACK_ENV']), or 
:development when no RACK_ENV environment variable is set. 

The environment can be set explicitly: 

set :environment, :production

如果推出自己的,那就是去了解它的好方法。

-1

使用:中間人創建的環境符號S按默認值: http://rubydoc.info/github/middleman/middleman/Middleman/Application#environment-instance_method

結合HAML - 你可以這樣做:

= javascript_include_tag "Dev.js" unless :environment == "developement" 

注意middlemans建設過程改變了:環境價值,以「建」

你也可以用發展論壇?測試是否是對開發還是不:http://rubydoc.info/github/middleman/middleman/Middleman/Application#development%3F-instance_method

上述所有適用於中間人3.0.6,並且可能不小的版本(請務必在2.X將無法正常工作)

上工作
相關問題