更新:
事实证明,有时results.image是零或"",所以这打破了应用程序,因为资产管道正在寻找像""这样的图像而没有找到它.现在我没有显示图像,如果没有图像,但我将不得不为缺失的图像添加默认图像......这应该是一个更永久的修复.
关于heroku cedar和Rails资产管道这个问题,我有很多问题,我尝试了很多解决方案,但是没有一个能够解决,而且可能是因为我遇到的问题有一个皱纹我没见过其他地方.
我的应用程序使用Rails 3.2.6,我已经将它部署在Heroku的雪松堆栈上.这是一个基本的搜索应用程序,通过websolr搜索附加的postgres数据库,所以当你加载索引(索引#index)而没有params [:q] .present?你有一个搜索框,这很好用.但是当我在搜索框中输入内容并点击提交,并且索引#index再次加载但这次尝试显示结果时,我得到:
app[web.1]: Completed 500 Internal Server Error in 440ms
app[web.1]:
app[web.1]: ActionView::Template::Error ( isn't precompiled):
app[web.1]: 12: - @results.each do |result|
app[web.1]: 13: %li
app[web.1]: 14: %div
app[web.1]: 15: = image_tag result.image
app[web.1]: 16: %div
app[web.1]: 17: = result.title
app[web.1]: 18: %div
app[web.1]: app/views/index/index.html.haml:15:in `block in _app_views_index_index_html_haml___4350601325072829986_32734540'
app[web.1]: app/views/index/index.html.haml:12:in _app_views_index_index_html_haml___4350601325072829986_32734540'
Run Code Online (Sandbox Code Playgroud)
关于我的具体案例和我见过的其他人有什么奇怪的是以下几行:
ActionView::Template::Error ( isn't precompiled):
Run Code Online (Sandbox Code Playgroud)
对于我所见过的所有其他问题,括号中有一个css文件,即("foo.css"未预编译),或者在我看来它应该是("index.css")没有预编译).但这里只是空白!
这是我试图开始工作的暂存部署,所以我尝试运行RAILS_ENV =暂存rake资产:precompile(然后提交结果),但这并没有解决它.我甚至尝试在视图中删除(注意那里没有任何实际的样式).什么都行不通,我很茫然.任何帮助将不胜感激.
作为参考,这是我的gemfile:
source 'https://rubygems.org'
gem 'rails', '3.2.6'
gem 'pg'
gem 'haml-rails'
gem 'mongoid'
gem 'sunspot_rails', '~> …Run Code Online (Sandbox Code Playgroud) 我想我可能在Warbler中发现了一个错误,但我想在这里发布这个问题以防万一我做错了.简而言之,任何尝试将需要"bson"gem的jruby应用程序打包到带有warbler的.jar文件中的尝试都会失败.这是我每次都得到的错误:
LoadError: no such file to load -- jar:file:/Users/jstokes/Local/Repositories/wartest/wartest.jar!/gems/bson-1.8.0-java/lib/../ext/java/jar/mongo-2.6.5 ...
Run Code Online (Sandbox Code Playgroud)
这是在OS X或Linux上重现问题的一组非常简单的步骤:
制作一个'wartest'目录并插入其中
使用bundler,创建一个名为'wartest'的新jruby-1.6.7.2 gemset.那么'rvm使用jruby-1.6.7.2@wartest'
安装warbler和bundler:
jruby --1.9 -S gem install warbler
jruby --1.9 -S gem install bundler
Run Code Online (Sandbox Code Playgroud)
只是为了确认它的工作原理:
which warble
#=> /Users/jstokes/.rvm/gems/jruby-1.6.7.2@wartest/bin/warble
Run Code Online (Sandbox Code Playgroud)
现在创建以下两行Gemfile:
#Gemfile
source 'http://rubygems.org'
gem 'bson'
Run Code Online (Sandbox Code Playgroud)
现在'捆绑安装'
现在创建一个bin目录并创建文件bin/main.rb.然后粘贴以下内容:
#bin/main.rb
require 'bson'
puts 'It worked!'
Run Code Online (Sandbox Code Playgroud)
此时,我们已准备好创建jar文件.那样做
jruby --1.9 -S warble jar
#=> rm -f wartest.jar
#=> Creating wartest.jar
Run Code Online (Sandbox Code Playgroud)
现在是时候了:
java -jar wartest.jar
#=> It worked!
Run Code Online (Sandbox Code Playgroud)
所以有什么问题?问题是,如果你换到另一个gemset,或者使用系统ruby,它会爆炸.注意:
rvm use system
#=> Now using system ruby.
java -jar wartest.jar
Run Code Online (Sandbox Code Playgroud)
LoadError: …
我想我发现了一个有关扭矩盒的错误.出于某种原因,如果我"宝石安装扭矩盒"然后在我的Gemfile中添加"宝石'扭矩盒'"线,"torquebox env"就会停止正常工作.这很容易重现,所以如果有人知道发生了什么,请告诉我:
要重现该错误,让我们创建一个新的gemset并安装torquebox-server
$ rvm use jruby-1.6.7.2
$ rvm gemset create test
$ mkdir torquetest
$ cd torquetest
$ rvm use jruby-1.6.7.2@test
Run Code Online (Sandbox Code Playgroud)
让我暂停一下,告诉你我的jruby-1.6.7.2@global中的内容,如果重要的话:
$ ls ~/.rvm/gems/jruby-1.6.7.2@global/gems
total 0
drwxr-xr-x 9 jstokes 306 Aug 9 16:26 ./
drwxr-xr-x 7 jstokes 238 Aug 9 16:25 ../
drwxr-xr-x 5 jstokes 170 Aug 9 16:25 bouncy-castle-java-1.5.0146.1/
drwxr-xr-x 15 jstokes 510 Aug 9 16:26 bundler-1.1.5/
drwxr-xr-x 34 jstokes 1156 Aug 9 16:25 jruby-launcher-1.0.15-java/
drwxr-xr-x 10 jstokes 340 Aug 9 16:25 jruby-openssl-0.7.7/
drwxr-xr-x 13 jstokes 442 …Run Code Online (Sandbox Code Playgroud)