简体   繁体   English

Capistrano部署错误无法激活jruby-openssl-0.9.5-java

[英]Capistrano deployment error Can't activate jruby-openssl-0.9.5-java

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. 我已经在JRuby(1.7.10)中开发了一个新的Rails(4.1.4)应用程序,并且尝试将Capistrano v3部署在远程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: 这就是Gemfile的样子:

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: 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: 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. 如果我删除共享目录中的bundle文件夹,那么它将安装所有gem。 But it fails next time onwards. 但是,下一次失败。 With 'remove_shared_bundle' task I tried to delete the bundle folder before before each deploy which worked. 通过“ remove_shared_bundle”任务,我尝试在每次部署成功之前先删除bundle文件夹。 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) 我认为此问题可能与JRuby的默认gem在1.7.10中不可更改有关……此问题已得到修复,因此直接的事情是尝试JRuby 1.7.15(或至少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. 我绝不会在Gemfile中声明gem'jruby gem 'jruby-openssl', '0.9.5' (完全删除),让JRuby使用可用的任何东西-想知道是否有任何gem将其引入 ,这是否也有帮助(如果有的话)没有宝石将其作为依赖项拉入捆绑包)在1.7.10下解决。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM