1
我实际上使用Rails 3.0,所以它是rails console
vs rails runner try.rb
。以下代码在控制台中运行良好,但不能作为运行程序的脚本运行。我需要跑步者(而不是使用ruby try.rb
),因为项目有一些ActiveRecord代码。一些Ruby代码在脚本/控制台中运行良好,但没有脚本/运行器,为什么?
更新:我不能运行它的myproj\lib\tasks\
内(在当前目录是myproj\lib\tasks\
),但可以在myproj
内运行,所以问题就来了,为什么一定要它在myproj
运行?
http_header = {'User-Agent' => 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.53 Safari/534.3'}
url = URI.parse('http://www.google.com/')
response = Net::HTTP.start(url.host, url.port) do |http|
http.get(url.path, http_header)
end
puts response.body
错误代码是:
c:\ror\proj\lib\tasks>rails runner try.rb
c:/ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.0/lib/rails/commands/runner.rb:50:in `eval': no method name given (ArgumentError)
from c:/ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.0/lib/rails/commands/runner.rb:50:in `eval'
from c:/ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.0/lib/rails/commands/runner.rb:50:in `<top (required)>'
from c:/ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.0/lib/rails/commands.rb:39:in `require'
from c:/ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.0/lib/rails/commands.rb:39:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
您意味着runner实际上试图找到文件'try。 rb'从项目的根目录开始?难道不是真的就像其他任何命令一样,比如'more'(在unix)或'cat'(在pc上)? – 2010-09-07 08:43:44
我相信大多数rails命令都假定它们在RAILS_ROOT中运行,所以它们知道app/lib/etc在哪里。 – 2010-09-07 08:55:03