加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

bundler / capistrano没有使用正确的ruby版本安装gem

发布时间:2020-12-17 03:15:19 所属栏目:百科 来源:网络整理
导读:我正在尝试在Capistrano的服务器上部署我的第一个应用程序,而且我在管理gemsets和 ruby版本方面有点迷失. 这些是我的(服务器和工作站)版本: Rails 3.2.8 RVM 1.16.17 宝石1.8.24 Bundler 1.2.1 pg gem 0.14.1 我的宝石是: ruby-1.9.3-p194的gemsets(在/usr
我正在尝试在Capistrano的服务器上部署我的第一个应用程序,而且我在管理gemsets和 ruby版本方面有点迷失.

这些是我的(服务器和工作站)版本:

> Rails 3.2.8
> RVM 1.16.17
>宝石1.8.24
> Bundler 1.2.1
> pg gem 0.14.1

我的宝石是:

ruby-1.9.3-p194的gemsets(在/usr/local/rvm/gems/ruby-1.9.3-p194中找到)

>(默认)
>全球
> => rail3dev20120606

我设置了默认的gemset:

rvm use 1.9.3-p194@rail3dev20120606 --default --passenger

我跑的时候:

cap bundle:install

任务以成功结束,但当我这样做时:

gem list

虽然它们存在于我的Gemfile中,但有很多遗失的宝石.
当我在/ var / www / opf / shared / bundle / ruby?? /中检查我的宝石时,我找到一个名为1.9.1的文件夹,并在/var/www/opf/shared/bundle/ruby/1.9.1/gems/我可以喜欢我所需的所有宝石(在Gemfile中指定).我确定ruby版本有问题,但我该如何解决?

目前,如果我执行任何rake命令,我遇到了ruby崩溃[Bug] Segmentation fault,因为它尝试访问db并使用postgresql_adapter:

/var/www/opf/shared/bundle/ruby/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:1213: [BUG] Segmentation fault

我认为,由于缺少许多宝石,必须有一些未经验证的宝石依赖项,并且宝石可能正在使用不兼容的ruby版本1.9.1,尽管它期望1.9.3.

我认为问题在于管理ruby版本和宝石.我当然正在与gemset和我的capistrano部署混合.

我缺少经验和信息.
任何人都可以告诉我如何在服务器上处理这个问题?什么是最佳做法?

我怎么想更新我的ruby版本?与Capistrano deploy.rb?手动?有没有rvm?我看到新版本的ruby 1.9.3-p327刚刚发布.

我应该使用gemset吗?那我的deploy.rb中的rvm_ruby_string怎么样?它是拼写正确还是我应该删除p194部分?我应该删除:rvm_ruby_string吗?收下 ?使用.rvmrc文件???

我真的迷路了,欢迎一些帮助.

在任何情况下,这都是我的config / deploy.rb:

require 'bundler/capistrano'
require File.join(File.dirname(__FILE__),'deploy') + '/capistrano_database'

set :rvm_type,:system

set :rvm_ruby_string,'ruby-1.9.3-p194@rail3dev20120606'
require 'rvm/capistrano'

set :application,'opf'
set :deploy_to,'/var/www/opf'
set :rails_env,'production'
set :user,'the_user'
set :use_sudo,false

set :group_writable,false
set :scm,:git
set :repository,'git@github.com:user/opf.git'
set :branch,'master'

default_run_options[:pty] = true

set :deploy_via,:remote_cache

server '192.168.5.200',:web,:app,:db,:primary => true

# If you are using Passenger mod_rails uncomment this:
namespace :deploy do
  task :start do ; end
  task :stop do ; end
  task :restart,:roles => :app,:except => { :no_release => true } do
    run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}"
  end
end

谢谢你的帮助

解决方法

安装了gem,但它们安装了bundler的上下文:

bundle exec gem list

这是因为bundler将它的设置存储在.bundle / config中并没有安装共享的gem,而是所有的gem都安装在每个项目的单独目录中,将其视为一个inplace gemset.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读