У меня есть приложение без рельсов, которое я пытаюсь развернуть. Он использует eventmachine и демоны. Я использую mina для развертывания, и сервер настроен на использование RVM.`require ': не удается загрузить такой файл - <gemname> приложение non-rails на сервере
Когда я пытаюсь выполнить
[email protected]:/var/www/myapp/current$ ruby bin/run_control.rb start
Это терпит неудачу с указанием
/usr/local/rvm/rubies/ruby-2.2.0/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- daemons (LoadError)
from /usr/local/rvm/rubies/ruby-2.2.0/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from bin/run_control.rb:1:in `<main>'
Содержимое для файла являются
[email protected]:/var/www/myapp/current$ cat bin/run_control.rb
require 'daemons'
Daemons.run('bin/run.rb')
РВМ Информация
ruby-2.2.0:
system:
uname: "Linux ip-999-99-9-99 4.4.0-53-generiC#74-Ubuntu SMP Fri Dec 2 15:59:10 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux"
system: "ubuntu/16.04/x86_64"
bash: "/bin/bash => GNU bash, version 4.3.46(1)-release (x86_64-pc-linux-gnu)"
zsh: " => not installed"
rvm:
version: "rvm 1.28.0 (latest) by Wayne E. Seguin <[email protected]>, Michal Papis <[email protected]> [https://rvm.io/]"
updated: "1 day 7 hours 3 minutes 31 seconds ago"
path: "/usr/local/rvm"
ruby:
interpreter: "ruby"
version: "2.2.0p0"
date: "2014-12-25"
platform: "x86_64-linux"
patchlevel: "2014-12-25 revision 49005"
full_version: "ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-linux]"
homes:
gem: "/usr/local/rvm/gems/ruby-2.2.0"
ruby: "/usr/local/rvm/rubies/ruby-2.2.0"
binaries:
ruby: "/usr/local/rvm/rubies/ruby-2.2.0/bin/ruby"
irb: "/usr/local/rvm/rubies/ruby-2.2.0/bin/irb"
gem: "/usr/local/rvm/rubies/ruby-2.2.0/bin/gem"
rake: "/usr/local/rvm/rubies/ruby-2.2.0/bin/rake"
environment:
PATH: "/usr/local/rvm/gems/ruby-2.2.0/bin:/usr/local/rvm/gems/[email protected]/bin:/usr/local/rvm/rubies/ruby-2.2.0/bin:/usr/local/rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
GEM_HOME: "/usr/local/rvm/gems/ruby-2.2.0"
GEM_PATH: "/usr/local/rvm/gems/ruby-2.2.0:/usr/local/rvm/gems/[email protected]"
MY_RUBY_HOME: "/usr/local/rvm/rubies/ruby-2.2.0"
IRBRC: "/usr/local/rvm/rubies/ruby-2.2.0/.irbrc"
RUBYOPT: ""
gemset: ""
Драгоценные камни устанавливаются на
:/var/www/myapp/shared/bundle/ruby/2.2.0/gems$ ls
aws-sdk-2.1.1 colorize-0.7.7 i18n-0.7.0 multi_json-1.11.1 rspec-3.2.0 rspec-support-3.2.1
aws-sdk-core-2.1.1 daemons-1.2.4 jmespath-1.0.2 net-scp-1.2.1 rspec-core-3.2.0 sshkit-1.7.1
aws-sdk-resources-2.1.1 diff-lcs-1.2.5 mina-0.3.4 net-ssh-2.9.2 rspec-expectations-3.2.0
capistrano-3.4.0 eventmachine-1.0.7 mina-multistage-1.0.2 open4-1.3.4 rspec-mocks-3.2.0
Сценарий развертывания Mina как
require 'mina/bundler'
require 'mina/git'
require 'mina/rvm' # for rvm support. (http://rvm.io)
set :rvm_path, '/usr/local/rvm/scripts/rvm'
task :environment do
invoke :'rvm:use[[email protected]]'
end
desc "Deploys the current version to the server."
task :deploy => :environment do
deploy do
invoke :'git:clone'
invoke :'deploy:link_shared_paths'
invoke :'bundle:install'
invoke :'deploy:cleanup'
to :launch do
queue "mkdir -p #{deploy_to}/#{current_path}/tmp/"
queue "touch #{deploy_to}/#{current_path}/tmp/restart.txt"
invoke :'start_event_machine_server'
end
end
end
task :start_event_machine_server do
queue 'cd /var/www/myapp/current && ruby bin/run_control.rb start'
end
В нем говорится: «bundler: not executable: bin/run_control.rb», когда я пытаюсь выполнить «bundle exec bin/run_control.rb start». Скрипт run_control.rb является исполняемым. –
его пучок exec ruby bin/run_control.rb start. Благодарю. –
Хорошая практика для исполняемых скриптов: (1) иметь исполняемый флаг и (2) включать в себя строку shebang, такую как '#!/Usr/bin/env ruby' в первой строке. С этими двумя изменениями ваш сценарий также можно запустить без указания «ruby» сначала, или в вашем случае просто как «bundle exec bin/run_control.rb start». –