问题
I cloned one of my own apps using Rails 3.1.3, created an app on Heroku on stack cedar, pushed the to Heroku, and then tried to run
heroku run rake db:migrate and got this error message
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>
I am in the root of the app when I run rake db:migrate. The app works on localhost.
Any ideas what I might be doing wrong?
The only thing I note that seems odd is that, in the error message, it's referring to ruby/1.9.1/
However, I created the app using rvm with ruby 1.9.2 and when I do ruby -v
ruby -v
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin10.8.0]
My 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
my gitignore file
# 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
回答1:
You have to push to the master branch. From looking at the comments above it looks like you are not doing this.
Therefore, assuming you're developing your application in the master branch, you can deploy with a simple:
git push heroku master
If you're not developing on master deploy with:
git push heroku your_branch_name:master
replacing your_branch_name with the name of the branch you're using.
回答2:
So i had my staging branch already clone and ready for deployment
I added a remote for heroku app
heroku git:remote -a heroku-webapp-name-here
Then i was trying to do something like this: (and wasnt working)
git push heroku staging
Finally running this worked liked a charm:
git push heroku staging:master
The problem is that if you look in the heroku dashboard you will see that the heroku app is not ruby
来源:https://stackoverflow.com/questions/9958797/heroku-no-rakefile-found-but-works-locally