requer que uma gem em um script ruby falhe no momento da inicialização

1

Eu estou inicializando usando uma máquina usando o chef. Eu preciso instalar um script init.d que ele faz e quando o script é invocado no final da execução do chef, o script falha na linha require 'daemons' (mostrada abaixo). Eu tenho uma impressão antes e depois do requerimento e a que está antes da requisição ser registrada.

# my_invoked_script.rb
 $stdout.reopen("output.txt")
 $stderr.reopen("err.txt")
 pid = fork
 if pid.nil?
     puts "Before"
     require 'daemons'
     puts "After"
     ...
 else
   Process.detach(pid)
 end

A impressão antes é registrada. A impressão posterior não é. Eu estou pensando que isso é no momento da inicialização algumas variáveis env podem não ser definidas corretamente. Alguém conseguiu executar scripts em Ruby com um requerimento neles no momento da inicialização?

Meu script init.d é um script padrão com a função start da seguinte forma:

start(){
   /usr/local/bin/ruby /home/ubuntu/my_invoked_script.rb
}

Efetuar login no terminal e executar o script não mostra erros e as coisas acontecem normalmente.

Ruby 1.9.2 ubuntu 11.04, embora eu não tenha certeza se algum deles é o problema aqui.

    
por av501 13.06.2013 / 08:55

1 resposta

0

Podem ser variáveis de ambiente, ou pode ser que o sistema de arquivos com os módulos não esteja montado no momento em que o script é executado.

Você pode tentar executar com ruby -w para obter mais informações, ou pode definir a variável environmnt RUBYLIBS antes de executar o script ruby, por exemplo

export RUBYLIB="/path/to/lib/ruby"

no começo.

    
por 13.06.2013 / 09:14