Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.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
Ruby on rails 资产管道Rails 3.2在生产中不工作_Ruby On Rails_Apache - Fatal编程技术网

Ruby on rails 资产管道Rails 3.2在生产中不工作

Ruby on rails 资产管道Rails 3.2在生产中不工作,ruby-on-rails,apache,Ruby On Rails,Apache,如何使Apache+乘客和Rails资产管道很好地协同工作 当我部署本地工作项目时,我得到一个500错误 In ActionView::Template::Error occurred in pages#start: jquery-ui-1.8.21.custom.min isn't precompiled 如果我为jquery-ui-1.8grepmy_project/current/assets\u manifest.yml,它会给我 jquery-ui-1.8.21.custom.mi

如何使Apache+乘客和Rails资产管道很好地协同工作

当我部署本地工作项目时,我得到一个500错误

In ActionView::Template::Error occurred in pages#start: jquery-ui-1.8.21.custom.min isn't precompiled
如果我为
jquery-ui-1.8
grep
my_project/current/assets\u manifest.yml
,它会给我

 jquery-ui-1.8.21.custom.min.js: jquery-ui-1.8.21.custom.minc50ea0bef9c2fae04ab3b50ead60fc1f.js
这个文件也存在于
my_project/shared/assets
(以及jquery-ui-1.8.21.custom.min-c50ea0bef9c2fae04ab3b50ead60fc1f.js.gz、jquery-ui-1.8.21.custom.min.js、jquery-ui-1.8.21.custom.min.js.gz)

当我打开
http://mytestserver/assets/jquery-ui-1.8.21.custom.min-c50ea0bef9c2fae04ab3b50ead60fc1f.js
在浏览器中,它为我提供了正确的js文件

500错误是从

app/views/layouts/application.haml:25
该文件的第24-26行是:

= javascript_include_tag "application"
= javascript_include_tag "jquery-ui-1.8.21.custom.min"
= csrf_meta_tag

那么,可能出了什么问题?为什么它不工作?

如果文件没有被
application.js
加载,那么您需要在
application.rb
中添加一行代码,以便应用程序了解它:

config.assets.precompile += ['jquery-ui-1.8.21.custom.min.js']

shared/assets
不是资产管道通常查找文件的地方

通常,资产管道在
app/assets
中查找,它可能在
lib/assets
中查找,我很确定它也在
供应商/资产
中查找。但默认情况下,
供应商/资产
可能不包括在内,我将在下面讨论

根据Rails惯例,我建议您将这种依赖关系放在
供应商/资产/javascripts

如果要将搜索目录添加到资产管道,只需对
config.application.rb

YourProject::Application
声明中,添加:


config.assets.path我想我已经解决了。。我认为这就是步骤:

  • 重命名capistrano部署的rake名称空间(名称空间和变量损坏的可能重复),该名称空间也在进行预编译
  • 将我通过
    javascript\u include\u标记包含的每个js文件添加到生产环境的config.assets.precompile中,如@Simon
  • 在config.assets.precompile中,它们似乎没有.js扩展名,而在
    javascript\u include\u标记
    指令中,它们应该包含在.js扩展名中

在application.rb中有一行
config.assets.precompile+=%w(*.js*.css)
。。这还不够吗?我从未尝试过将通配符传递给
config.assets.precompile
,但快速搜索表明,其他人这样做的结果好坏参半。可能值得传递实际的文件名,看看是否能解决问题。我取消了该行的活动。。现在,在rails控制台的生产环境中,我得到了
1.8.7:003>config.assets.precompile/(:\/\\\\\\\\\\\A)应用程序\(css$/,“gmaps4rails.css”,“jquery.fileupload ui”,“jquery.tagsinput”,“jquery.Jcrop.min”,“jquery-ui-1.8.21.custom.min”,“gmaps4rails.css”,“jquery.fileupload ui”,“jquery.tagsinput”,“jquery.Jcrop.min”“
但我仍然得到
1.8.7:004>helper.javascript\u include\u标记“jquery-ui-1.8.21.custom.min”链轮::Helpers::RailsHelper::AssetPath::AssetNotPrecompiledError:jquery-ui-1.8.21.custom.min未预编译
资产位于/webapps/shoppl/current/public/assets和/webapps/shoppl/shared/assets中(我想通过符号链接应该是相同的)顺便问一下,为什么我应该/不应该把jquery-ui-1.8.21.custom.min.js打包到application.hs?我需要这个jquery gem东西吗?如果你尝试清除
assets
文件夹中的内容并再次运行
rake assets:precompile RAILS\u ENV=production
,可以吗d
my_project/current$bundle exec rake assets:precompile RAILS_ENV=production
仍然是一样的。在我的开发机器上,它们在my_project/app/assets中。我说的是服务器-因此也是capistrano在生产中引入的当前和共享文件夹