Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/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
Ruby on rails 本地运行Rails 4.2.5中的资产预编译会产生问题;制作.rb";默认值_Ruby On Rails_Ruby On Rails 4_Asset Pipeline_Precompile - Fatal编程技术网

Ruby on rails 本地运行Rails 4.2.5中的资产预编译会产生问题;制作.rb";默认值

Ruby on rails 本地运行Rails 4.2.5中的资产预编译会产生问题;制作.rb";默认值,ruby-on-rails,ruby-on-rails-4,asset-pipeline,precompile,Ruby On Rails,Ruby On Rails 4,Asset Pipeline,Precompile,我已经用RailsVer建立了一个实验性的网站。4.2.5.1,在CentOS 6.6 Linux机箱上。我遵循了“Rails入门”指南和Weblog构建教程, 然后对使用SSL进行了更改,并在生产模式下运行 为了预编译资产(javascript和图像),我运行了“rake资产:clobber”来删除以前的缓存结果,然后运行了“rake资产:预编译”。这将创建“指纹”文件名(与原始文件名关联的长十六进制字符串(MD5哈希?),并将编译后的资产放入../Weblog/public/assets目录

我已经用RailsVer建立了一个实验性的网站。4.2.5.1,在CentOS 6.6 Linux机箱上。我遵循了“Rails入门”指南和Weblog构建教程, 然后对使用SSL进行了更改,并在生产模式下运行

为了预编译资产(javascript和图像),我运行了“rake资产:clobber”来删除以前的缓存结果,然后运行了“rake资产:预编译”。这将创建“指纹”文件名(与原始文件名关联的长十六进制字符串(MD5哈希?),并将编译后的资产放入../Weblog/public/assets目录

“资产:预编译”过程记录在Rails“资产管道”文档和链轮文档中。 我遵循的文档位于:


默认情况下,使用《Rails入门》指南中的方法生成的“production.rb”文件似乎不起作用。我使用一个两行脚本文件启动WEBrick rails服务器,该文件是:

    export SSL=true
    rails server -b 0.0.0.0  -p 3000  -e production
我想使用assets:precompile特性,为了实现这一点,我根据sprockets-rails文档对“config/application.rb”文件进行了更改,并包括以下行:

需要“链轮/系杆”

我还必须修改文件“config/environments/production.rb”。文件的默认版本有:

     # Compress JavaScripts and CSS.
     config.assets.js_compressor = :uglifier
     # config.assets.css_compressor = :sass
注意:uglifier行是活动的,但是:sass行被注释掉了

默认的production.rb文件也有以下行:

     # Do not fallback to assets pipeline if a precompiled asset is missed
     config.assets.compile = false
要使WEBrick服务器在生产模式下从Linux机器上使用预编译资产实际运行,我需要做的是调用css_Compressor,并注释掉“config.assets.compile=false”行,而不是切换它。(如果资产已经在本地预编译,那么我假设不需要或不想实时编译它们)

因此,对config/production.rb文件的更改使生产模式Web服务器在CentOS机箱上运行:

     # Compress JavaScripts and CSS.
     # config.assets.js_compressor = :uglifier
     config.assets.css_compressor = :sass

     # Do not fallback to assets pipeline if a precompiled asset is missed
     # config.assets.compile = false
这似乎就做到了。如果没有这些更改,图像将不会在浏览器中呈现(Windows上的Firefox 44/iOS上的Safari/Android 5.1.1上的Firefox),并且“销毁”链接(用于调用删除方法并从文章数据库中删除文章)将不会显示确认对话框,也不会执行删除操作。通过上面对production.rb的更改,一切都可以正常工作,因此当我运行服务器时,图像文件会显示出来,实际运行“销毁/删除”过程的javascript会被提供给浏览器,教程日志网站也会正常工作。但是,如果打开“config.assets.js_compressor=:uglifier”(通过删除#注释),它将不起作用,如果没有注释掉“config.assets.compile=false”,它将不起作用

据我所知,预编译正在工作,预编译的资产以及添加到图像文件文件名中的指纹信息(长MD5十六进制字符串)和javascript都得到了正确的服务。 我知道大多数部署都是针对Heroku和AWS的,所以我使用自己的硬件进行生产模式对于带有WEBrick的Rails来说有点不标准,但我很好奇为什么。我是否错过了一些必要的步骤

假设生产模式在本地Linux机器上运行,是否有其他(更好的)方法来进行资产预编译?
“丑八怪”不起作用有什么明显的原因吗?Thx.

更新:这个问题很相似,有一半答案…更新:这个问题很相似,有一半答案。。。将config.assets.precompile=['.js'、'.css'、'*.css.erb']放在production.rb中。另外,要预编译的cmd是“RAILS\u ENV=production bundle exec rake assets:precompile”。但是,如果我取消注释“config.assets.js.compressor=:uglifier”,则Destroy的jquery_ujs javascript无法工作。问题看起来像是javascript压缩器。