我使用Rails 3.1.3克隆了我自己的一个应用程序,在堆栈雪松上的Heroku上创建了一个应用程序,将其推送到Heroku,然后尝试运行
heroku run rake db:migrate
并收到此错误消息
No Rakefile found (looking for: rakefile, Rakefile, rakefile.rb, Rakefile.rb)
/usr/local/lib/ruby/1.9.1/rake.rb:2367:in `raw_load_rakefile'
/usr/local/lib/ruby/1.9.1/rake.rb:2007:in `block in load_rakefile'
/usr/local/lib/ruby/1.9.1/rake.rb:2058:in `standard_exception_handling'
/usr/local/lib/ruby/1.9.1/rake.rb:2006:in `load_rakefile'
/usr/local/lib/ruby/1.9.1/rake.rb:1991:in `run'
/usr/local/bin/rake:31:in `<main>
当我运行rake db:migrate
时,我位于应用的根目录中。该应用程序适用于localhost。
任何想法我可能做错了什么?
我唯一注意到的是奇怪的是,在错误消息中,它指的是ruby/1.9.1/
但是,我使用带有ruby 1.9.2的rvm创建了应用程序,当我执行ruby -v
时
ruby -v
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin10.8.0]
我的Gemfile
source 'http://rubygems.org'
gem 'rails', '3.1.3'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
group :development, :test do
gem 'sqlite3'
end
group :production do
gem 'pg'
end
group :production do
gem 'thin'
end
gem "heroku"
gem 'omniauth-facebook'
gem 'omniauth'
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', '~> 3.1.5'
gem 'coffee-rails', '~> 3.1.1'
gem 'uglifier', '>= 1.0.3'
end
gem "rmagick"
gem "carrierwave"
gem 'fog'
gem 'simple_form'
gem 'devise'
gem 'jquery-rails'
# To use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.0.0'
# Use unicorn as the web server
# gem 'unicorn'
# Deploy with Capistrano
# gem 'capistrano'
# To use debugger
# gem 'ruby-debug19', :require => 'ruby-debug'
group :test do
# Pretty printed test output
gem 'turn', '0.8.2', :require => false
end
我的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
# Ignore all logfiles and tempfiles.
/log/*.log
/tmp
答案 0 :(得分:30)
你必须推送到主分支。通过查看上面的评论,看起来你没有这样做。
因此,假设您正在主分支中开发应用程序,可以使用简单的部署进行部署:
git push heroku master
如果您没有使用以下方式开发master;
git push heroku your_branch_name:master
将your_branch_name替换为您正在使用的分支的名称。
答案 1 :(得分:0)
所以我的暂存分支已经克隆并可以部署了
我为heroku应用添加了遥控器
heroku git:remote -a heroku-webapp-name-here
然后我正在尝试做这样的事情:(并且没有工作)
git push heroku staging
最后运行此命令很吸引人:
git push heroku staging:master
问题是,如果您在heroku仪表板中查看,将会发现heroku应用程序不是红宝石
答案 2 :(得分:0)
实际上你的主分支或你推送的哪个分支没有被推送到 heroku,这就是为什么它说没有 Rakefile。
最有可能的......我认为当您在终端中使用 heroku CLI 创建您的 heroku 应用程序时,您可能没有指明要使用的 heroku 堆栈。看到他们有几个堆栈。我认为cedar-14, heroku-16, heroku-18 and heroku-20
。
所以取决于您的 ruby 版本。您应该查明是否在上述 heroku 堆栈中找到了 Rails 应用程序的 ruby 版本。您需要在终端中执行此操作来更改堆栈。
例如,您的 ruby 版本存在于 cedar-14 中。您无需删除应用程序并重新创建一个新应用程序。您可以像这样从 heroku cli 更改堆栈。
heroku stack:set cedar-14
对于未来的应用程序,最好指定 heroku 堆栈。例如,像这样:
heroku create --stack cedar-14
然后重命名您的应用
heroku rename myapp
同样,如果 Heroku 找不到你的 rakefile 是因为没有任何东西被推送到 heroku。