почему я не получаю `нет такого файла для загрузки - ruby-debug` в рабочей задаче rake? - PullRequest
2 голосов
/ 14 марта 2012

У меня есть грабли, которые выглядят так (crontab):

cd /data/TheApp/current && bundle exec rake nightly_tasks[3] 
   --trace --silent 2>> /data/TheApp/shared/log/tasks_prod_errors.log

Все работает нормально в test и dev, но на prod я получаю эту ошибку:

rake aborted!
no such file to load -- ruby-debug
/usr/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler/runtime.rb:68:in  
   `require'
/usr/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler/runtime.rb:68:in 
        `block (2 levels) in require'

ОК, поэтому я проверяю свой гемфайл, и у меня есть это:

group :development, :test do
  gem 'ruby-debug19', :require => 'ruby-debug', :platforms => :ruby
...

Производственная среда должна игнорировать это требование отладки ruby. Поэтому я проверяю свой RAILS_ENV, и это правильно:

$ echo $RAILS_ENV
production

Кроме того, закомментирована строка, которая требовала отладки ruby ​​в этой задаче rake. Так что для меня это выглядит так, будто нет никакой возможности, чтобы bundle exec пытался загрузить ruby-debug в prod. Может быть, это как-то связано с gemfile.lock? Там есть запись для ruby-debug19. Но почему в этом случае моя задача с граблями загружает его?

Кроме того, выполнение команды из командной строки работает нормально. Смешение.

Ответы [ 2 ]

4 голосов
/ 14 марта 2012

Среда rails и группы компоновщиков - это две разные вещи.Один не знает о другом, хотя они используют аналогичные термины в вашем случае

В качестве обходного пути, вы можете использовать bundle install --without development test в производственном режиме, чтобы сообщить сборщику не устанавливать эти группы.В качестве альтернативы вы можете использовать что-то вроде этого в вашем Gemfile:

unless ENV['RAILS_ENV'] == "production"
  gem 'ruby-debug19', :require => 'ruby-debug', :platforms => :ruby
end

, что предполагает наличие переменной окружения RAILS_ENV.во время бега bundle install, а также во время бега bundle exec (т.е. всегда).

0 голосов
/ 04 августа 2014

Все, что вам нужно сделать, это использовать гем «debugger» для ruby ​​1.9.

gem install debugger
...