Некоторый код Ruby хорошо работает в скрипте / консоли, но не в скрипте / бегуне, почему? - PullRequest
1 голос
/ 07 сентября 2010

Я на самом деле использую Rails 3.0, так что это rails console против rails runner try.rb. Следующий код хорошо работает в консоли, но не как скрипт с runner. Мне нужен бегун (вместо использования ruby try.rb), потому что есть некоторый код ActiveRecord для проекта.

Обновление: Я не смог запустить его внутри 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>'

1 Ответ

2 голосов
/ 07 сентября 2010

Откуда вы запускаете команду?

Вам нужно запустить команду из корневого каталога rails и указать полный или относительный путь к имени файла, поэтому rails runner lib/try.rb

Причина этого в том, что исполнитель команд принимает либо имя файла, содержащего код ruby, либо строку, содержащую код ruby. Когда исполнитель команды не может найти файл с именем в argv (0), он пытается вычислить argv (0), поэтому он пытается вычислить строку try.rb

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