Есть ли способ передать файл ruby, foo.rb, в консоль rails. Ожидаемые результаты будут после того, как консоль запустит среду rails для запуска файла.
Или любым другим способом, который позволил бы мне выполнить файл в среде рельсов, запускаемый из командной строки.
ruby-on-rails-3
Харис Краина
источник
источник
Ответы:
На самом деле, самый простой способ - запустить его
load
внутриrails console
источник
Ты можешь использовать
ОБНОВИТЬ:
В последнее время мы также часто используем загрузку среды rails из самого скрипта. Учтите
doit.rb
:Это также работает, если скрипт или текущий рабочий каталог не находятся в каталоге приложения rails.
источник
f=File.new('path/to/file')
для запуска используйте:f.rewind; eval f.readlines.join("\n");
eval(File.read ...)
деталь. Rails принимает файл Ruby в качестве аргументаrails runner
:Usage: rails runner [options] [<'Some.ruby(code)'> | <filename.rb>]
rails r path/to/filename.rb
функционально эквивалентноbundle exec rails runner
команде, упомянутой выше.Пока что это решение было поддержано.
Теперь намного проще.
источник
простой, грязный и блокирующий процесс в конце, но он выполняет работу именно так, как я хотел.
источник
Рассмотрите возможность создания рейк-задачи.
Например, для кода, который мне нужен для создания записей или поддержки миграции, я часто создаю такую задачу из этого ответа . Например:
В
lib/tasks/example.rake
:А затем в терминале запустите:
источник
Из этих подходов, упомянутых ранее, ни один не казался чистым и идеальным, как вы ожидаете, что будет запускаться автономный скрипт (без оценки или передачи через <перенаправление), но, наконец, это работает идеально для меня:
(для Rails 3)
Вставьте вверху вашего скрипта:
Конечно, укажите свой собственный путь к приложению Rails в строке APP_PATH.
Таким образом, я могу избежать необходимости вводить какие-либо интерактивные элементы
irb
илиrails c
и могу протестировать свой script.rb из приглашения оболочки, например, до. планирование его в crontab.Он также плавно поддерживает параметры командной строки и сводит к минимуму уровни оберток, прежде чем перейти к вашему коду.
КРЕДИТ (также показан пример Rails 2)
http://zerowidth.com/2011/03/18/standalone-script-runner-bin-scripts-in-rails.html
источник
Вот что я использую:
Пример:
На основе ответа @ moritz здесь. Я изменил его, так как рабочий каталог
File.read
- это корень проекта Rails.Я знаю, что это серьезная ересь - использовать python для помощи скрипту Ruby. Но я не мог найти
relpath
метода, встроенного в Ruby.Кредит:
relpath()
было взято из @MestreLion, Преобразование абсолютного пути в относительный путь для текущего каталога с помощью Bashисточник