Trong số những cách tiếp cận này được đề cập trước đó, không có cách nào có vẻ sạch sẽ và lý tưởng như bạn mong đợi để chạy một tập lệnh độc lập (không nhận được eval-ed hoặc được chuyển hướng qua <redirection), nhưng cuối cùng thì cách này hoàn hảo đối với tôi:
(dành cho Rails 3)
Chèn vào đầu tập lệnh của bạn:
#!/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...
Tất nhiên, hãy đặt đường dẫn ứng dụng Rails của riêng bạn trong dòng APP_PATH.
Bằng cách đó, tôi có thể tránh phải nhập bất kỳ tương tác nào irb
hoặc rails c
và có thể kiểm tra script.rb của tôi từ dấu nhắc trình bao, trước ví dụ. lập lịch trình trong crontab.
Nó cũng hỗ trợ trơn tru các tham số dòng lệnh và giảm thiểu các cấp độ của trình bao bọc trước khi truy cập vào mã của bạn.
CREDIT (cũng hiển thị ví dụ về Rails 2)
http://zerowidth.com/2011/03/18/standalone-script-runner-bin-scripts-in-rails.html