Разобрать среду приложения Rails для скрипта Ruby - PullRequest
2 голосов
/ 16 ноября 2010

Из чистого любопытства я задаюсь вопросом, можно ли (без сомнения, так и есть) «зацепиться» за среду приложения Rails. Например, скажем, я хочу создать скрипт cron (я этого не делаю), который выполняет какое-то обслуживание в приложении Rails, и я хочу написать его на Ruby и использовать весь хороший код, который у меня уже есть Например, User.find и т. д.

Возможно ли это, и если да, то как?

Мне просто любопытно, потому что я чувствую, что в конечном итоге захочу сделать это по тем или иным причинам.

Я в настоящее время на Rails 3 с Ruby 1.9.1, на случай, если это имеет значение.

Ответы [ 5 ]

1 голос
/ 07 августа 2012

Вы можете использовать script / rails runner , как предложено Arsen7, или вы можете написать свой собственный скрипт, в котором вы сначала загружаете среду приложения:

require 'config/environment'

на самом делевсе, что вам нужно.

Чтобы ваш скрипт работал в задании cron, убедитесь, что он исполняемый ( chmod u + x ) и начинается с правильной строки shebang ( #! / usr / bin / env ruby ​​ или все, что подходит для вашей ситуации).

1 голос
/ 16 ноября 2010

Взгляните на класс Rails :: Railtie .Если вам нужно запустить код кода при запуске приложения, это способ сделать это. Вот очень простой пример.

1 голос
/ 16 ноября 2010

С самого начала Rails существует ./script/runner, предназначенный именно для такого рода проблем.

В Rails 3 вы называете это как: ./script/rails runner "puts User.find(:all).map(&:inspect)"

Попробуйте ./script/runner --help или ./script/rails runner --help

В качестве аргумента для бегуна вы указываете имя файла или просто код.

Это часто более полезно, чем подготовка задачи Rake, потому что вы можете выполнить только один раздействия:

ssh prod@example.com "cd rails/app && ./script/runner -e production 'puts User.count'"
1 голос
/ 16 ноября 2010

Это, конечно, возможно. Вот хорошее описание того, как это сделать: Как запустить задачу rake из cron

0 голосов
/ 07 августа 2012

да, просто укажите эти файлы в начале вашего скрипта

require  'config/boot.rb' 
require 'config/application.rb'
Rails.application.require_environment!

Теперь у вас будет доступ к вашим моделям

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