-----> Preparing app for Rails asset pipeline
Running: rake assets:precompile
! Timed out compiling Ruby app (15 minutes)
! See https://devcenter.heroku.com/articles/slug-compiler#time-limit
当我从gemfile资产中删除unicorn gem时:预编译开始工作......我如何解决这个问题?
答案 0 :(得分:0)
由于这对我来说似乎是个问题,我会给你一些我一直在看的指南。
我解决这个问题的方法是谷歌错误。当我输入heroku独角兽设置时,我得到了这个页面:https://devcenter.heroku.com/articles/rails-unicorn
更新:我遇到的错误是资产编译问题。通过在我的网页上使用inspect元素引起了我的注意。所以我再次阅读了一些指南,以确保资产预先编译(因为我已经有两个链接,所以只能提供名称):
Heroku特定说明:
NOTE: everything from below this point will be for getting your app ready for deployment onto Heroku.
要启用静态资产服务和Heroku登录等功能,请将rails_12factor gem添加到Gemfile的末尾。
gem 'rails_12factor', group: :production
指定特定的Ruby。在gemfile的末尾添加...
ruby "2.1.2"
在宝石文件中
gem 'unicorn'
然后运行
$ bundle install
现在您已准备好将应用配置为使用Unicorn。
在config / unicorn.rb上为Unicorn创建配置文件:
$ touch config/unicorn.rb
添加Unicorn特定配置选项在文件config / unicorn.rb中:
worker_processes Integer(ENV["WEB_CONCURRENCY"] || 3)
timeout 15
preload_app true
before_fork do |server, worker|
Signal.trap 'TERM' do
puts 'Unicorn master intercepting TERM and sending myself QUIT instead'
Process.kill 'QUIT', Process.pid
end
defined?(ActiveRecord::Base) and
ActiveRecord::Base.connection.disconnect!
end
after_fork do |server, worker|
Signal.trap 'TERM' do
puts 'Unicorn worker intercepting TERM and doing nothing. Wait for master to send QUIT'
end
defined?(ActiveRecord::Base) and
ActiveRecord::Base.establish_connection
end
此默认配置假定使用Active Record的标准Rails应用程序。您应该熟悉the official Unicorn documentation中的不同选项。
最后,您需要告诉Heroku如何通过在应用程序目录的根目录中创建一个Procfile来运行您的Rails应用程序。
touch Procfile
(note: the case is important!)
Procfile中的写道:
web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
将RACK_ENV设置为您环境中的开发和要连接的PORT。在推送到Heroku之前,您需要测试RACK_ENV设置为生产,因为这是您的Heroku应用程序将运行的环境。
$ echo "RACK_ENV=development" >> .env
$ echo "PORT=3000" >> .env
您还需要将.env添加到.gitignore中,因为这是针对本地环境设置的。
$ echo ".env" >> .gitignore
$ git add .gitignore
$ git commit -m "add .env to .gitignore"
使用Foreman在本地测试您的Procfile:
$ gem install foreman
您现在可以通过运行
启动Web服务器$ foreman start
18:24:56 web.1 | I, [2013-03-13T18:24:56.885046 #18793] INFO -- : listening on addr=0.0.0.0:5000 fd=7
18:24:56 web.1 | I, [2013-03-13T18:24:56.885140 #18793] INFO -- : worker=0 spawning...
18:24:56 web.1 | I, [2013-03-13T18:24:56.885680 #18793] INFO -- : master process ready
18:24:56 web.1 | I, [2013-03-13T18:24:56.886145 #18795] INFO -- : worker=0 spawned pid=18795
18:24:56 web.1 | I, [2013-03-13T18:24:56.886272 #18795] INFO -- : Refreshing Gem list
18:24:57 web.1 | I, [2013-03-13T18:24:57.647574 #18795] INFO -- : worker=0 ready
按Ctrl-C退出,您可以将更改部署到Heroku:
$ git add .
$ git commit -m "use unicorn via procfile"
$ git push heroku master
检查ps,您将看到Web进程使用新命令将Unicorn指定为Web服务器
$ heroku ps
=== web (1X): `bundle exec unicorn -p $PORT -c ./config/unicorn.rb`
web.1: starting 2014/04/17 12:55:33 (~ 1s ago)
此时您可以按照正常程序在heroku上获取您的应用
git init
git add -A
git commit -m "initial commit"
在github上设置内容....然后
heroku create
git push heroku master
在Heroku上迁移数据库
heroku run rake db:migrate
确保将应用设置为运行
heroku ps:scale web=1
打开应用
heroku open