З цих підходів, згаданих раніше, жоден не здавався чистим та ідеальним, як ви очікували б запуску автономного сценарію (не отримуйте eval-ed чи piped через <перенаправлення), але нарешті це працює для мене ідеально:
(для рейок 3)
Вставте вгорі сценарію:
#!/usr/bin/env ruby
APP_PATH = File.expand_path(appdir = '/srv/staging/strat/fundmgr/config/application', __FILE__)
require File.expand_path(appdir + '/../boot', __FILE__)
require APP_PATH
# set Rails.env here if desired
Rails.application.require_environment!
# your code here...
Звичайно, встановіть свій власний шлях до програми Rails у рядку APP_PATH.
Таким чином, я можу уникнути необхідності вводити будь-який інтерактивний irb
або rails c
і можу перевірити свій script.rb з підказки оболонки, перш ніж, наприклад. планує його в кронтабі.
Він плавно підтримує параметри командного рядка і мінімізує рівні обгортки, перш ніж перейти до вашого коду.
КРЕДИТ (також показаний приклад Rails 2)
http://zerowidth.com/2011/03/18/standalone-script-runner-bin-scripts-in-rails.html