在layout
的{{1}}文件中,我想确定我们是否处于开发和构建环境中。我们正在使用米德尔曼。
我想做这样的事情:
haml
我尝试访问Ruby的环境变量,并在- if environment == 'development'
/ Development Code
= javascript_include_tag "Dev.js"
文件中定义自定义变量但没有成功。
答案 0 :(得分:29)
你几乎做对了 - 你需要检查符号而不是字符串:
- if environment == :development
/ Development Code
= javascript_include_tag "Dev.js"
Middleman还添加了development?
and build?
methods,这可能更容易使用:
- if development?
/ Development Code
= javascript_include_tag "Dev.js"
这也适用于ERB:
<% if development? %>
<!-- Development Code -->
<%= javascript_include_tag "Dev.js" %>
<% end %>
答案 1 :(得分:0)
首先,如果可能,您应该将逻辑与数据分开。确定控制器中的环境,并切换发送到视图的数据(HAML布局文件)。
通常,您需要在环境变量中设置一个标记,并在ENV
的代码中访问它。例如,Sinatra使用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
如果你必须自己动手,这是一个很好的方法。
答案 2 :(得分:-1)
使用中间人默认创建的:environment符号: http://rubydoc.info/github/middleman/middleman/Middleman/Application#environment-instance_method
结合haml - 您可以执行以下操作:
= javascript_include_tag "Dev.js" unless :environment == "developement"
请注意,middlemans构建流程会将:环境值更改为“build”
你还可以使用开发吗?测试你是否在使用dev:http://rubydoc.info/github/middleman/middleman/Middleman/Application#development%3F-instance_method以上所有内容适用于中间人3.0.6,可能不适用于较小版本(肯定不会在2.x上运行)