Nic*_*ick 8 ruby ruby-on-rails
我在我的Rails应用程序中有一个Ruby脚本,用于从Twitter加载一些数据.
在未来,我将使它成为一个自动后台进程,但现在我手动运行它,如:
ruby /lib/twitter/twitterLoad.rb
Run Code Online (Sandbox Code Playgroud)
为了使用Rails模型类等,我将以下作为脚本的第一行:
require "#{File.dirname(__FILE__)}/../../config/environment.rb"
Run Code Online (Sandbox Code Playgroud)
默认情况下,使用开发环境.但是,我希望能够在某个时候选择生产环境.
更新#1:RAILS_ENV常量在environment.rb文件中设置.所以,我能够将ENV ['RAILS_ENV'] ='production'放在最顶层(在environment.rb之前)并解决我的问题.所以,我的新问题是,可以通过命令行传入env变量吗?
Rya*_*igg 23
如果您打算使用rails环境,最好的办法是将其作为rake脚本.要执行此操作,请将twitter.rake文件放入lib/tasks中,然后以这样的方式开始和结束:
task(:twitter_load => :environment) do
# your code goes here
end
Run Code Online (Sandbox Code Playgroud)
这样,你就是通过"遵循惯例"来实现的,并且它没有那种与之相关的难闻气味.
Gar*_*ett 10
我目前使用以下方法,我知道环境没有rb扩展名,不需要它.您也可以在运行它之前设置它来覆盖ENV["RAILS_ENV"].
#!/usr/bin/env ruby # Set your environment here. ENV["RAILS_ENV"] ||= "production" require File.dirname(__FILE__) + "/../../config/environment" puts "Rails was loaded!"
然后要更改环境,只需运行它:
rb /lib/tasks/file.rb RAILS_ENV=development
不要忘记脚本/跑步者.
从命令行设置环境变量
ruby script/runner your_script_here.rb
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24875 次 |
| 最近记录: |