ruby - 从 git 中引用 ruby​​ gem 会破坏 aws beanstalk 部署

标签 ruby ruby-on-rails-4 amazon-web-services bundler amazon-elastic-beanstalk

我已成功设置我的 aws 环境。但是我有一个问题。在我的 Gemfile 中,我有以下行:

gem 'activeadmin', :github => 'gregbell/active_admin'

当我执行 git aws.push 时,我可以在 aws 日志中看到以下错误:

/usr/local/share/ruby/gems/2.0/gems/bundler-1.3.5/lib/bundler/source/git.rb:177:in `rescue in load_spec_files': git://github.com/gregbell/active_admin.git (at master) is not checked out. Please run `bundle install` (Bundler::GitError)

我能够通过创建这个文件来解决这个问题:.ebextensions/ruby.config

option_settings:
  - option_name: BUNDLE_DISABLE_SHARED_GEMS
    value: "1"
  - option_name: BUNDLE_PATH
    value: "vendor/bundle"

packages:
  yum:
    git: []

这会将所有内容打包到 vendor/bundle 中,我的应用程序将启动 correctyl。

但是这种方法有两个问题:

  1. 部署时间很长,因为每次都需要安装所有gem
  2. 当我通过 ssh 连接到 EC2 实例时,我无法再执行命令。例如,我必须启动一个 rpush 守护进程。这在本地适用于 bundle exec rpush development 但在 EC2 上这会导致:

    bundle 执行 rpush /usr/local/share/ruby/gems/2.0/gems/bundler-1.3.5/lib/bundler.rb:284: 警告:PATH 中的不安全世界可写目录/var/app/current/vendor/bundle/bin,模式 040777 git://github.com/gregbell/active_admin.git (at master) 未 checkout 。请运行 bundle install

是否有其他方法可以正确安装 gems 并同时使用系统 gems?或者,如果这不可能,我如何在 bundle gems 时启动 rpush

最佳答案

在本地环境中更新 Gemfile.lock(bundle install&& bundle update)。并使用 Gemfile 和 Gemfile.lock 推送提交。再次部署到 AWS。

关于ruby - 从 git 中引用 ruby​​ gem 会破坏 aws beanstalk 部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24782081/

相关文章:

ruby-on-rails - 返回数组中匹配元素的列表索引

ruby-on-rails - 在 Ruby 中传递&符号冒号与仅冒号(符号)之间的区别

ruby :能被 4 整除

ruby-on-rails - 如何从 url 中删除随机多余的斜杠?

mysql - 在 rails 4 应用程序中检查用户 ssh 公钥

amazon-web-services - 我们项目的新基础设施(AWS、GCP)

ruby-on-rails - 查找具有特定帖子的所有男性用户

ruby-on-rails-4 - 为什么 jquery-tablesorter 在我的 Rails 4 应用程序中不起作用?

php - DynamoDB : updateItem only if it already exists

java - 使用 DynamoDBMapperConfig 进行 DynamoDBMapper 批量删除