我遇到了将Rail应用程序部署到Heroku的困难。我真的非常感谢一系列的想法,以便对此进行整理,我已经筋疲力尽了我的想法,我正在努力拔掉头发!
短篇小说: heroku run rake db:migrate
会产生错误:
Running rake db:migrate attached to terminal... up, run.1
DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/01/04/rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /app/Rakefile:7)
DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/01/04/rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /app/Rakefile:7)
rake aborted!
syntax error on line 7, col 11: `'
这看起来应该很容易修复。问题是,我没有任何插件!
长篇故事:我正准备重新部署Rails应用以进行暂存。这是Heroku上的Rails 3.0应用程序,我刚刚完成了一次重大升级,包括升级到Rails 3.2,Ruby 1.9.2,删除插件和重大改写。我现在正试图推动Heroku的雪松堆进行更多的测试。
我一直试图解决这个问题几天,并一直在想我已经到了某个地方,但我很失望。最近我认为我的git repos不对齐,并且Heroku远程包含这些插件的旧提交。我不再认为是这种情况。 (我确实想检查一下,但由于此错误,我无法进入Heroku控制台验证文件结构)。
要确认,我的vendor / plugins文件夹在我的本地主服务器和远程github存储库上肯定是空的。它在远程Heroku分支上应该是空的,因为我已经推送了所有更新(我甚至创建了一个完全空白的应用程序,带有一个新的远程名称进行测试,但得到了同样的错误)。我说供应商/插件是空的,但实际上供应商/插件不存在,在我删除插件后已完全删除。
我在早期版本的应用程序中安装了两个插件:HABTM复选框和fancybox-rails。这些都已被卸载rails plugin remove <<plugin name>>
。
我已检查错误/app/rakefile:7
中引用的文件,但看不出此行MyApp::Application.load_tasks
有任何问题。
如果我尝试启动heroku控制台,则错误略有不同,并引用/app/config/environment.rb:5)
。我在MyApp::Application.initialize!
我已经经历了所有可能的地方寻找这些插件或旧require
语句的任何残余,并且没有任何结果。
我真的很感激我能在哪里看到的任何想法。如果需要,我可以提供更多信息,我只是不确定在这个阶段有什么用处!!
感谢您帮助我保持头发!!
修改
我正在添加错误中引用的rakefile的全部内容。我看不出有任何问题。
# Add your own tasks in files placed in lib/tasks ending in .rake,
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
require File.expand_path('../config/application', __FILE__)
require 'rake'
MyApp::Application.load_tasks
答案 0 :(得分:2)
经过大量的头发拉动和挫折之后,我终于将其追溯到日志中的以下条目
/usr/local/lib/ruby/1.9.1/syck.rb:135:in `load': syntax error on line 7, col 11: `' (ArgumentError)
syck.rb解析yaml文件,并且看到我有一个yaml文件的(次要)问题,省略了一些特定于环境的信息。
有关详细信息,请参阅this SO question。
答案 1 :(得分:1)
插件弃用警告来自插件Heroku在构建时注入您的应用程序,因此它在平台上正常运行。那些可以被忽略。
问题的关键似乎与源/ rake文件中的语法错误有关。这是重要的输出:
rake aborted!
syntax error on line 7, col 11: `'
查看错误源自的文件的第7行(将其余的堆栈跟踪发布给我们的参考?),你会发现某种语法错误需要修复。
如果要清楚地分离插件加载和应用加载时间,可以使用heroku run bash
加载shell,然后运行rake任务以查看其输出是否隔离:
$ heroku run bash
> bundle exec rake db:migrate
希望有所帮助。
答案 2 :(得分:0)
我在某地读过heroku使用插件自动执行某些任务......所以这不是你的错误
如果您想要停用弃用警告,请使用以下小代码:
# Load the rails application
require File.expand_path('../application', __FILE__)
# Initialize the rails application
ActiveSupport::Deprecation.silence do
Selfcare::Application.initialize!
end