Heroku:找不到Rakefile(但在本地工作)

时间:2012-03-31 19:05:09

标签: ruby-on-rails ruby ruby-on-rails-3.1 heroku

我使用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

3 个答案:

答案 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。