Я слежу за обзором RoR Майкла Хартла, и есть несколько мест, где он использует IRB, часто для добавления пользователей в базу данных. Когда я использую rails console
для открытия IRB, а затем создаю пользователя в базе данных, все работает нормально, но если я попытаюсь сделать то же самое, запустив ту же строку кода из файла, такого как test.rb
, в каталоге моего приложения, это не сработает. работайте, потому что он говорит, что не может найти модель пользователя. Можно ли каким-либо образом запустить эти строки кода (т. е. для помещения пользователя в базу данных) из файла .rb, а не из IRB?
Rails нужен IRB?
Ответы (3)
Для отдельного скрипта загляните в rails runner
. Он загружает серверную часть Rails, поэтому у вас есть доступ ко всем моделям и существует для этой цели.
Из "руководств по Ruby on Rails":
runner запускает код Ruby в контексте Rails неинтерактивно. Например:
$ rails runner "Model.long_running_method"
Если вы просто используете test.rb
для удобства сохранения и повторного запуска консольных команд, вы можете сделать это:
rails console < test.rb
Или, в качестве хака, поместите это вверху вашего test.rb
:
require 'config/environment'
И вызовите его из корневого каталога приложения следующим образом:
ruby -I . test.rb
rails console < test.rb
, в моем случае, сообщает, что он переключается в режим проверки, а затем выполняет команды, как если бы я их набрал. Но мне больше нравится ответ rails runner
.
- person Rob Davis; 19.06.2011
Размещение файла ruby в папке вашего приложения не приводит к автоматической загрузке вашего приложения Rails. Вам нужно явно загрузить файл config/environment.rb
, чтобы загрузить приложение Rails.
Если ваш test.rb находится в корне вашего приложения, вы можете сделать что-то вроде
require File.expand_path("../config/environment", __FILE__)
# Access your models here