每次推送到heroku时Rails都会重新安装

0 git rubygems ruby-on-rails heroku

当我写作
git push heroku master

我的应用程序成功推送到heroku,但它需要大约30秒到一分钟,因为它说它是"安装gem rails 2.83"并且"Rails未在.gems或Gemfile中声明."

我该如何解决?.gems文件究竟是什么?它在哪里?

非常感谢.我对使用rails和heroku进行开发是全新的.

Chr*_*sen 6

Heroku上有一个描述文件"警告:检测到的Rails是不是在任何.gems或Gemfile中宣称"消息和位置,用途和语法.gems文件.它的URL在警告消息本身后面给出:

-----> Heroku receiving push
-----> Rails app detected
-----> WARNING: Detected Rails is not declared in either .gems or Gemfile
       Scheduling the install of Rails 2.3.8.
       See http://docs.heroku.com/gems for details on specifying gems.
Run Code Online (Sandbox Code Playgroud)

首先,您应该注意声明您的gem依赖项的建议.由于你使用的是Rails 2.3,使用一个.gems文件而不是一个文件可能更容易Gemfile(但是,如果像Bundler的想法一样,你仍然可以使用GemfileRails 2.3):

# .../project-root/.gems

rails -v 2.3.8
# List any other required gems (and their versions) here
Run Code Online (Sandbox Code Playgroud)

(添加并提交文件,以便Heroku将在下次推送时看到它)

其次,"每次推送后安装宝石"是Heroku如何运作的核心.他们在推送历史记录的最前面取出树,并将其编译成只读"slug",可以快速部署到内部网络中的服务器.这为"部署时间"换取了一些"推动时间".

这种"从头开始构建每次推送"行为对于学习/探索/开发来说非常烦人,其中通常在推送之间进行小的增量应用程序更改,但似乎有一种方法可以避免这些情况.只需使用一个.gems文件.当应用程序声明的gem依赖项没有从一个推送更改为另一个推送(即没有更改.gems文件)时,它们似乎跳过"从头开始安装所有gem依赖项"步骤.

底线:.gems在项目中包含一个文件.下一次推送仍将通过"安装gem rails",但后续推送应跳过该步骤(除非您更改.gems文件以更改您的gem依赖项集).