Подтвердить что ты не робот

Как узнать, в какой среде работает код?

В layout файле haml я хотел бы определить, находимся ли мы в наших средах разработки и сборки. Мы используем Миддмана.

Я хотел бы сделать что-то вроде этого:

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

Я попытался получить доступ к переменной среды Ruby, а также определить пользовательскую переменную в файле config.rb без успеха.

4b9b3361

Ответ 1

У вас почти все правильно: вам нужно проверить символ, а не строку:

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

Middleman также добавляет методы development? и build?, которые могут быть проще использовать:

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

Это также работает с ERB:

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

Ответ 2

Во-первых, если это возможно, вы должны отделить логику от данных. Определите свою среду в контроллере и переключите данные, отправляемые в представление (файл макета 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

Если вам нужно катиться самостоятельно, это хороший способ сделать это.

Ответ 3

Используйте символ среды, созданный по умолчанию посредником: http://rubydoc.info/github/middleman/middleman/Middleman/Application#environment-instance_method

в сочетании с haml - вы можете сделать что-то вроде:

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

Обратите внимание, что процесс сборки промежуточных компонентов изменяет значение среды: "build"

вы также можете использовать разработку? чтобы проверить, находитесь ли вы на dev или нет: http://rubydoc.info/github/middleman/middleman/Middleman/Application#development%3F-instance_method

Все вышеизложенное относится к среднему человеку версии 3.0.6 и может не работать в меньших версиях (не работает на 2.x)