В Ruby on Rails «если определено? Продукт» не работает в режиме сценария / бегуна? - PullRequest
1 голос
/ 25 августа 2010

Если есть простой сценарий и для определения того, выполняется ли он сам по себе или в среде приложения Rails, я попытался использовать

if defined? Product
  # something
end

, но его не удалось распознать, даже если определен Productи может быть использован в противном случае.С тех пор я попытался использовать

if defined? RAILS_ENV

вместо этого, и это хорошо работает, но удивляюсь, почему defined? Product не работает?

1 Ответ

1 голос
/ 25 августа 2010

Это должно работать

if Product
  # something
end

определено?ModelName возвращает ноль для всех моих моделей.

Loading development environment (Rails 2.3.8)
>> defined? Post
=> nil

Но тогда, если я сделаю это

>> Post; defined? Post
=> "constant"

Возможно, потому что ничего не загружено, пока вы не коснетесь его.Надеюсь, это поможет.

Редактировать : Хорошо, хорошо, тогда скрипт / бегун - это неинтерактивная форма скрипта / консоли, я думаю, он загружает все приложение Rails и запускается из него.контекст.Если вам нужно определить, был ли вызов сделан из скрипта / бегуна, я могу только подумать о передаче параметра в функцию Model.long_running_method (: runner => true) и выполнить вашу условную проверку по этому вопросу, или, если это недостаточно удобно, установитьконстанта ENV ENV ['thing_runner '].И вместо этого выполните проверку состояния.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...