当我写作时
git push heroku master
我的应用程序已成功推送到heroku,但它需要大约30秒到一分钟,因为它说它是“安装gem rails 2.83”并且“Rails未在.gems或Gemfile中声明。”
我该如何解决这个问题?什么是.gems文件以及它在哪里?
非常感谢。我对使用rails和heroku进行开发是全新的。
答案 0 :(得分:6)
Heroku有a document that describes the “WARNING: Detected Rails is not declared in either .gems or Gemfile” message and the location, purpose, and syntax of the .gems
file。它的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.
首先,您应该注意声明您的gem依赖项的建议。由于您使用的是Rails 2.3,因此使用.gems
文件而不是Gemfile
可能更容易(但是,如果像Bundler的想法一样,您仍然可以use a Gemfile
with Rails 2.3 ):
# .../project-root/.gems
rails -v 2.3.8
# List any other required gems (and their versions) here
(添加并提交文件,以便Heroku在下次推送时会看到它)
其次,“每次推送后安装宝石”是Heroku如何运作的核心。他们将推送历史记录中的树和可以快速部署到其内部网络中的服务器的compile it into a read-only “slug”。这为“部署时间”换了一些“推动时间”。
这种“从头开始构建每次推送”行为对于学习/探索/开发来说非常烦人,其中通常只在推送之间进行小的增量应用程序更改,但似乎有一种方法可以避免这些情况。只需使用.gems
文件即可。当应用程序声明的gem依赖项不会从一个推送更改为另一个推送(即没有更改.gems
文件)时,它们似乎跳过“从头开始安装所有gem依赖项”步骤。
底线:在项目中包含.gems
文件。下一次推送仍将通过“安装gem rails”,但后续推送应跳过该步骤(除非您更改.gems
文件以更改您的gem依赖项集。)