2014-07-16 148 views
2

我已经成功建立了我的aws环境。不过,我有一个probelem。在我的Gemfile我有以下行:从git引用红宝石宝石打破aws beanstalk部署

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: [] 

这一切都打包到供应商/束和我的应用程序开始correctyl。

不过,我有两个问题的方法:

  1. 这需要很长的部署,因为它需要每次
  2. 我不能够再当我ssh到要执行的命令安装所有的宝石EC2实例。例如,我必须启动一个rpush deamon。本地这一点也适用bundle exec rpush development,但在EC2上这会导致:

    束EXEC RPUSH /usr/local/share/ruby/gems/2.0/gems/bundler-1.3.5/lib/bundler.rb:284:警告:在PATH中,模式040777 git://github.com/gregbell/active_admin.git(在主服务器)没有签出时,不安全的可写dir/var/app/current/vendor/bundle/bin。请运行软件包安装

是否有其他方式正确安装宝石,同时使用系统宝石?或者如果这是不可能的,当宝石捆绑在一起时,我怎样才能开始rpush

+0

类似http://stackoverflow.com/questions/13642171/elastic-beanstalk-ruby-rails-need-to-install-git-so-bundle-install-works-but-i检查一些答案。有或没有BUNDLE_DISABLE_SHARED_GEMS的 –

回答

0

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

+0

? –

+0

我从来没有'触及'BUNDLE_DISABLE_SHARED_GEMS参数,但在我的项目中它是'BUNDLE_DISABLE_SHARED_GEMS:'1''默认 – skozz

+0

您是使用乘客还是独角兽? – skozz

0

你可以检查在你的Gemfile中使用gem 'activeadmin', 'git://github.com:gregbell/active_admin'是否适合你?

还可以获得按照指示利用供应商/缓存更快的部署,这里给出: http://blogs.aws.amazon.com/application-management/post/Tx2XVRWSS4E971S/Locally-Packaging-Gem-Dependencies-for-Ruby-Applications-in-Elastic-Beanstalk

+0

gem'activeadmin','git://github.com:gregbell/active_admin'会产生一个不规则的要求[“git://github.com:gregbell/active_admin“](Gem :: Requirement :: BadRequirementError)''' –

0

什么解决我的问题:我修改了捆绑安装脚本,并添加了--deployment标志