I have developed a new Rails (4.1.4) app in JRuby (1.7.10) and I am trying to deploy it with Capistrano v3 on a remote vps. The error I am getting looks like:
INFO[551a80fb] Running ~/.rvm/bin/rvm default do bundle install --binstubs /home/deployer/apps/APPNAME/shared/bin --path /home/deployer/apps/APPNAME/shared/bundle --without development test on example.net
DEBUG[551a80fb] Command: cd /home/deployer/apps/APPNAME/releases/20140919052426 && ~/.rvm/bin/rvm default do bundle install --binstubs /home/deployer/apps/APPNAME/shared/bin --path /home/deployer/apps/APPNAME/shared/bundle --without development test
DEBUG[551a80fb] Gem::LoadError: can't activate jruby-openssl-0.9.5-java, already activated jruby-openssl-0.9.3
DEBUG[551a80fb]
DEBUG[551a80fb] raise_if_conflicts at /home/deployer/.rvm/rubies/jruby-1.7.10/lib/ruby/shared/rubygems/specification.rb:1988
DEBUG[551a80fb]
DEBUG[551a80fb] activate at /home/deployer/.rvm/rubies/jruby-1.7.10/lib/ruby/shared/rubygems/specification.rb:1238
DEBUG[551a80fb]
DEBUG[551a80fb] gem at /home/deployer/.rvm/rubies/jruby-1.7.10/lib/ruby/shared/rubygems/core_ext/kernel_gem.rb:48
DEBUG[551a80fb]
DEBUG[551a80fb] require at /home/deployer/.rvm/rubies/jruby-1.7.10/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:46
DEBUG[551a80fb]
DEBUG[551a80fb] (root) at /home/deployer/.rvm/rubies/jruby-1.7.10/lib/ruby/shared/rubygems/security.rb:11
DEBUG[551a80fb]
DEBUG[551a80fb] require at org/jruby/RubyKernel.java:1083
DEBUG[551a80fb]
DEBUG[551a80fb] require at /home/deployer/.rvm/rubies/jruby-1.7.10/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55
DEBUG[551a80fb]
DEBUG[551a80fb] require at /home/deployer/.rvm/rubies/jruby-1.7.10/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:53
DEBUG[551a80fb]
DEBUG[551a80fb] (root) at /home/deployer/.rvm/rubies/jruby-1.7.10/lib/ruby/shared/rubygems/package.rb:1
DEBUG[551a80fb]
DEBUG[551a80fb] require at org/jruby/RubyKernel.java:1083
DEBUG[551a80fb]
DEBUG[551a80fb] require at /home/deployer/.rvm/rubies/jruby-1.7.10/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55
DEBUG[551a80fb]
DEBUG[551a80fb] require at /home/deployer/.rvm/rubies/jruby-1.7.10/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:53
DEBUG[551a80fb]
DEBUG[551a80fb] (root) at /home/deployer/.rvm/rubies/jruby-1.7.10/lib/ruby/shared/rubygems/package.rb:43
DEBUG[551a80fb]
DEBUG[551a80fb] require at org/jruby/RubyKernel.java:1083
DEBUG[551a80fb]
DEBUG[551a80fb] require at /home/deployer/.rvm/rubies/jruby-1.7.10/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:55
DEBUG[551a80fb]
DEBUG[551a80fb] require at /home/deployer/.rvm/rubies/jruby-1.7.10/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:53
DEBUG[551a80fb]
DEBUG[551a80fb] (root) at /home/deployer/.rvm/rubies/jruby-1.7.10/lib/ruby/shared/rubygems/dependency_installer.rb:1
DEBUG[551a80fb]
DEBUG[551a80fb] (root) at /home/deployer/.rvm/rubies/jruby-1.7.10/lib/ruby/shared/rubygems/dependency_installer.rb:4
DEBUG[551a80fb]
DEBUG[551a80fb] (root) at /home/deployer/.rvm/gems/jruby-1.7.10@global/gems/bundl
DEBUG[551a80fb] er-1.7.3/lib/bundler/installer.rb:1
DEBUG[551a80fb]
DEBUG[551a80fb] (root) at /home/deployer/.rvm/gems/jruby-1.7.10@global/gems/bundler-1.7.3/lib/bundler/installer.rb:2
DEBUG[551a80fb]
DEBUG[551a80fb] (root) at /home/deployer/.rvm/gems/jruby-1.7.10@global/gems/bundler-1.7.3/lib/bundler/cli/install.rb:1
DEBUG[551a80fb] run at /home/deployer/.rvm/gems/jruby-1.7.10@global/gems/bundler-1.7.3/lib/bundler/cli/install.rb:78
DEBUG[551a80fb]
DEBUG[551a80fb] install at /home/deployer/.rvm/gems/jruby-1.7.10@global/gems/bundler-1.7.3/lib/bundler/cli.rb:145
DEBUG[551a80fb]
DEBUG[551a80fb] run at /home/deployer/.rvm/gems/jruby-1.7.10@global/gems/bundler-1.7.3/lib/bundler/vendor/thor/command.rb:27
DEBUG[551a80fb]
DEBUG[551a80fb] invoke_command at /home/deployer/.rvm/gems/jruby-1.7.10@global/gems/bundler-1.7.3/lib/bundler/vendor/thor/invocation.rb:121
DEBUG[551a80fb]
DEBUG[551a80fb] dispatch at /home/deployer/.rvm/gems/jruby-1.7.10@global/gems/bundler-1.7.3/lib/bundler/vendor/thor.rb:363
DEBUG[551a80fb]
DEBUG[551a80fb] start at /home/deployer/.rvm/gems/jruby-1.7.10@global/gems/bundler-1.7.3/lib/bundler/vendor/thor/base.rb:440
DEBUG[551a80fb]
DEBUG[551a80fb] load at org/jruby/RubyKernel.java:1099
DEBUG[551a80fb]
DEBUG[551a80fb] start at /home/deployer/.rvm/gems/jruby-1.7.10@global/gems/bundler-1.7.3/lib/bundler/cli.rb:9
DEBUG[551a80fb]
DEBUG[551a80fb] eval at org/jruby/RubyKernel.java:1119
DEBUG[551a80fb]
DEBUG[551a80fb] (root) at /home/deployer/.rvm/gems/jruby-1.7.10@global/bin/jruby_executable_hooks:15
This is how the Gemfile looks like:
source 'https://rubygems.org'
ruby '1.9.3', :engine => 'jruby', :engine_version => '1.7.10'
gem 'bouncy-castle-java', '<= 1.50' # my attempt to fix the version of jruby-openssl
gem 'jruby-openssl', '0.9.5' # to 0.9.5. Tried with 0.9.3 but with no effect.
gem 'rails', '4.1.4'
gem 'sass-rails', '~> 4.0.3'
gem 'uglifier', '>= 1.3.0'
gem 'therubyrhino'
gem 'jquery-rails'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0', group: :doc
gem 'activerecord-jdbcmysql-adapter'
gem 'devise'
gem 'devise_invitable', :github => 'scambra/devise_invitable'
gem "paperclip"
gem 'acts_as_list'
gem 'pry-rails', group: :development
gem 'rubyzip'
gem 'to_bool', '~> 1.0.1'
gem "jquery-fileupload-rails"
# Use Capistrano for deployment
gem 'capistrano', group: :development
gem 'capistrano-rvm', group: :development
gem 'capistrano-bundler', group: :development
gem 'capistrano-rails', group: :development
gem 'trinidad', require: false
gem 'trinidad_init_services', require: false
gem 'rvm1-capistrano3', require: false
Capfile:
require 'capistrano/setup'
require 'capistrano/deploy'
require 'capistrano/rvm'
require 'capistrano/bundler'
require 'capistrano/rails'
require 'capistrano/rails/assets'
require 'capistrano/rails/migrations'
require 'rvm1/capistrano3'
Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r }
deploy.rb:
# config valid only for Capistrano 3.1
lock '3.2.1'
set :bundle_flags, '--deployment' # tried removing switch deployment if installing as system gem helps
set :deploy_user, "deployer"
set :application, 'APPNAME'
set :repo_url, 'git@bitbucket.org:user/repo.git'
server "example.net", user: 'deployer', roles: [:web, :app, :db]
set :rvm_type, :user
set :rvm1_ruby_version, 'jruby-1.7.10'
set :scm, :git
set :pty, true
set :deploy_to, "/home/#{fetch(:deploy_user)}/apps/#{fetch(:application)}"
set :linked_files, %w{config/database.yml}
set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system}
set :keep_releases, 5
after "deploy", "deploy:cleanup"
namespace :deploy do
desc 'Restart application'
task :restart do
on roles(:app), in: :sequence, wait: 5 do
execute :touch, release_path.join('tmp/restart.txt')
end
end
after :publishing, :restart
after :restart, :clear_cache do
on roles(:web), in: :groups, limit: 3, wait: 10 do
# Here we can do anything such as:
# within release_path do
execute :rake, 'cache:clear'
# end
end
end
desc 'Delete shared bundle folder'
task :remove_shared_bundle do
on roles(:app), in: :sequence, wait: 5 do
execute :rm, "-fr", "#{shared_path}/bundle"
end
end
before :starting, :remove_shared_bundle
end
def template(from, to)
erb = File.read(File.expand_path("../config/recipes/templates/#{from}", File.dirname(__FILE__)))
# File.join(File.expand_path(File.dirname(__FILE__)), 'poi')
# put ERB.new(erb).result(binding), to
upload! StringIO.new(ERB.new(erb).result(binding)), to
end
namespace :deploy do
desc "Install everything onto the server"
task :install do
on roles(:all), in: :sequence, wait: 1 do
execute 'mkdir', '-p', fetch(:deploy_to)
execute :sudo, 'apt-get', '-y', "update"
execute :sudo, 'apt-get', '-y', "install", "build-essential zlib1g-dev libssl-dev libreadline-gplv2-dev python-software-properties curl git-core openjdk-7-jdk jsvc"
end
end
end
It seems the root of the error is Thor gem. If I remove bundle folder inside shared directory then it installs all the gems. But it fails next time onwards. With 'remove_shared_bundle' task I tried to delete the bundle folder before before each deploy which worked. But then it would do a fresh installation every time which is time taking.
Is there a remedy for this issue?
I think this issue might be related to JRuby's default gems being unchangeable in 1.7.10 ... it has been fixed since, so the immediate thing is to try JRuby 1.7.15 (or at least 1.7.13)
I would than not declare gem 'jruby-openssl', '0.9.5'
in the Gemfile (remove it completely) let JRuby use whatever it has available - wonder if there are any gem pulling it in, that could also help (if there's no gem pulling it into the bundle as a dependency) resolve it under 1.7.10.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.