Heroku with rails 4 app无法通过Bundler安装宝石

时间:2013-11-06 20:01:05

标签: ruby-on-rails heroku deployment jruby bundler

我已经在这些相同的行中看到了很多问题但是我已经尝试了捆绑更新并提交更新的Gemfile.lock但没有成功。这是我尝试推送到我的heroku git repo时的输出:

-----> Ruby app detected
-----> Compiling Ruby/Rails
-----> Using Ruby version: ruby-1.9.3-jruby-1.7.4
-----> Installing JVM: openjdk7-latest
-----> Installing dependencies using Bundler version 1.3.2
       Ruby version change detected. Clearing bundler cache.
       Old: jruby 1.7.4 (1.9.3p392) 2013-07-24 fffffff on OpenJDK 64-Bit Server VM 1.7.0_25-b30 [linux-amd64]
       New: jruby 1.7.4 (1.9.3p392) 2013-07-24 fffffff on OpenJDK 64-Bit Server VM 1.7.0_45-b31 [linux-amd64]
       Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin --deployment
       Picked up JAVA_TOOL_OPTIONS: -Djava.rmi.server.useCodebaseOnly=true
       You are trying to install in deployment mode after changing
       your Gemfile. Run `bundle install` elsewhere and add the
       updated Gemfile.lock to version control.
       You have added to the Gemfile:
       * source: git://github.com/gregbell/active_admin.git (at master)
       You have deleted from the Gemfile:
       * source: https://github.com/gregbell/active_admin.git (at master)
       You have changed in the Gemfile:
       * activeadmin from `git://github.com/gregbell/active_admin.git (at master)` to
       `no specified source`
       Bundler Output: Picked up JAVA_TOOL_OPTIONS: -Djava.rmi.server.useCodebaseOnly=true
       You are trying to install in deployment mode after changing
       your Gemfile. Run `bundle install` elsewhere and add the
       updated Gemfile.lock to version control.

       You have added to the Gemfile:
       * source: git://github.com/gregbell/active_admin.git (at master)

       You have deleted from the Gemfile:
       * source: https://github.com/gregbell/active_admin.git (at master)

       You have changed in the Gemfile:
       * activeadmin from `git://github.com/gregbell/active_admin.git (at master)` to
       `no specified source`
 !
 !     Failed to install gems via Bundler.
 !

 !     Push rejected, failed to compile Ruby app

有没有人知道为什么会失败?显示active_admin更改的行自很久以前就没有更新过,从那时起就已经对heroku进行了推送。

同样关于You are trying to install in deployment mode after changing your Gemfile我已经运行了bundle install并添加了我的Gemfile.lock并多次推送。在我的项目中运行git状态的视图:

# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
# .ruby-version
# app/assets/stylesheets/_base.scss
# app/assets/stylesheets/_colors.scss
# app/assets/stylesheets/_footer.scss
# app/assets/stylesheets/_forms.scss
# app/assets/stylesheets/_header.scss
# app/assets/stylesheets/_icons.scss
# app/assets/stylesheets/_k.scss
# app/assets/stylesheets/_k_mixins.scss
# app/assets/stylesheets/_k_ratings.scss
# app/assets/stylesheets/_project_windows.scss
# app/assets/stylesheets/_reset.scss
# app/assets/stylesheets/application.scss
# app/assets/stylesheets/ie_fixes.scss
# app/assets/stylesheets/mixins.scss
nothing added to commit but untracked files present (use "git add" to track)

和我的.gitignore:

# See http://help.github.com/ignore-files/ for more about ignoring files.
#
# If you find yourself ignoring temporary files generated by your text editor
# or operating system, you probably want to add a global ignore instead:
#   git config --global core.excludesfile '~/.gitignore_global'

# Ignore bundler config.
/.bundle

# Ignore the default SQLite database.
/db/*.sqlite3
/db/*.sqlite3-journal

# Ignore all logfiles and tempfiles.
/log/*.log
/tmp

# Ignore database config file
database.yml

*.iml
.rvmrc
.idea

2 个答案:

答案 0 :(得分:1)

如果您在本地计算机上运行bundle时使用的是Bundler 1.4的预发布版本,那么您遇到的问题是github gems的URL从使用git协议更改为httpshttps://github.com/bundler/bundler/issues/2600

要解决此问题,您应该在本地更新到更新的Bundler 1.4预发行版(通过运行gem install --pre bundler或删除Bundler 1.4预发行版并使用1.3.x。

答案 1 :(得分:0)

这个问题很糟糕,因为你将坏(旧)Gemfile.lock提交给heroku服务器。 你需要在添加/删除gems后更新heroku上的Gemfile.lock。

执行以下步骤:

  1. 保存现有heroku应用程序的HEROKU_APP_NAME(HEROKU_APP_NAME.herokuapp.com)
  2. https://dashboard.heroku.com/apps删除heroku应用程序并创建新的
  3. 将新的heroku应用重命名为旧HEROKU_APP_NAME
  4. 从你的git repo中删除Gemfile.lock
  5. 从您的本地项目中删除Gemfile.lock并形成.gitignore(如果它存在)
  6. 运行捆绑安装
  7. 将更改提交到git repo(新创建的Gemfile.lock)
  8. 运行git push heroku master