Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Heroku 无法检测到rake任务_Heroku - Fatal编程技术网

Heroku 无法检测到rake任务

Heroku 无法检测到rake任务,heroku,Heroku,我没有任何要自动运行的rake任务。我应该忽略这个警告吗?我昨天突然出现了这个奇怪的错误。Heroku确认对Ruby buildpack进行了测试 这和耙子有关。您的Rakefile是否需要任何文件?它需要你的应用程序文件吗?如果是这样的话,那么在没有设置任何配置变量的情况下加载应用程序时,不应该引发异常 这与直觉相反,因为应用程序在没有配置变量设置的情况下永远不会运行 在我的例子中,Sinatra应用程序在init文件中查找数据库URL: ensure you can run `$ bu

我没有任何要自动运行的rake任务。我应该忽略这个警告吗?

我昨天突然出现了这个奇怪的错误。Heroku确认对Ruby buildpack进行了测试

这和耙子有关。您的Rakefile是否需要任何文件?它需要你的应用程序文件吗?如果是这样的话,那么在没有设置任何配置变量的情况下加载应用程序时,不应该引发异常

这与直觉相反,因为应用程序在没有配置变量设置的情况下永远不会运行

在我的例子中,Sinatra应用程序在init文件中查找数据库URL:

   ensure you can run `$ bundle exec rake -P` against your app with no environment variables present
   and using the production group of your Gemfile.
   This may be intentional, if you expected rake tasks to be run
   cancel the build (CTRL+C) and fix the error then commit the fix:
   rake aborted!
如果未设置环境变量,这将引发异常

对于其他数据库URL,例如Mongo或Postgres,您可能会遇到同样的问题

因此,防止丢失环境变量:

uri = URI.parse( ENV[ "REDISTOGO_URL" ])
在推送到Heroku之前,您可以运行
bundle exec rake-p

此外,请确保在更新init后所有测试都通过。通过重新启动Spork或类似程序删除任何缓存的初始化状态


参考:自2013年12月5日起生效

将触发以下错误:

  • 如果
    assets:precompile
    任务不存在或
  • 如果耙子文件中有错误。
    • Rakefile中出现错误的两个常见原因是引用了生产中不可用的依赖项(如rspec)或
    • 应存在环境变量
这是违反直觉的,因为应用程序从来没有在没有配置变量的情况下运行,但是

根据错误消息,在推送到Heroku之前,确保可以在不存在环境变量的情况下运行bundle exec rake-p RAILS_ENV=production(例如,在运行上述命令时注释掉环境变量)

另外,请放心,
rake
-p
开关是无害的,因此在解决此问题之前,您可以随心所欲地运行它。此开关用于显示所有任务及其直接先决条件的列表。看看你是否想再检查一遍。输出可能有200多行,如下所示:

if  ENV[ "REDISTOGO_URL" ]
  uri = URI.parse( ENV[ "REDISTOGO_URL" ])
  ...

您还可以尝试启用用户环境编译

rake about
    environment
rake assets:clean
    environment
rake assets:clobber
    environment
rake assets:environment
rake assets:precompile
    environment
rake db:_dump
...
rake tmp:pids:clear
rake tmp:sessions:clear
rake tmp:sockets:clear

FWIW我也遇到了这个问题

事实证明,当有一个rake任务在
production.rb
中引用它时,我已经注释掉了
config.assets.css\u compressor=:sass


非常简单的疏忽,但这会导致
rake资产:预编译
失败,从而导致此错误。

旧问题,但我刚才遇到了此问题,有一个新的解决方案。如果您使用的是Ruby版本是的,我会导入应用程序资源,一个简单的条件导入就可以完成这项工作。我想知道是否可以加载环境或阻止heroku检查Rakefile。有一种加载环境的方法:。但是,我认为使用条件语句更容易、更好。我认为不可能阻止Heroku检查Rakefile…出于安全原因,不鼓励使用该实验室功能。是的,绕过Heroku的构建过程并不是解决这个问题的正确方法。但是,这个答案虽然可以让读者走上正确的道路,但也存在许多问题(例如,在没有设置环境变量的情况下,阻止应用程序引发异常——相反,你希望应用程序在这种情况下爆炸)。我试图修正这个答案,但后来我把大部分的话都拿走了。感谢您的changelog参考资料,但恕我直言,我将提交另一个答案。这可能是我的最佳解决方案。请提供详细信息,说明它的具体功能和工作原理。heroku实验室已弃用
无法找到该功能。
此外,确保您的GEM文件包含
rake
。对我来说就这么简单。尽管以前不需要,但现在仍然没有弄清楚为什么它需要它在Gemfile中。你不应该在
Gemfile
中需要
rake
,因为
rake
是的一个依赖项,它是的一个依赖项(默认组
Gemfile
)。这可能适用于Rails应用程序,但不一定适用于其他机架应用程序,比如中间人。在我的例子中,将
rake
添加到我的
Gemfile
是有意义的。明白了。我现在意识到,我说我所说的是因为你说了“确保”,我不想让这句话绊倒一个无辜的旁观者……)谢谢你的澄清!
heroku labs:enable user-env-compile