2011-10-24 54 views
5

我部署CSS和图像后部署项目到服务器 - 它的工作,但JS不工作 - 404。在HTML和公共/资产 - 不匹配。错误的指纹Rails的3.1资产管道生产中的JS文件

In HTML: application-6851a5d9167871936c32da723dca0f23.js 
In public/assets: application-95ecf5bab4b7984abe8c1c23b72a7679.js 
+2

你能(通过编辑直接)添加一些信息,你的问题:什么是HTML的手段?你的意思是你的源代码中由Rails生成的URL?我怀疑它在开发中起作用。你做了什么来获得资产? '耙资产:预编译'?你有没有改变配置中的任何东西?这是一个新的rails应用程序还是迁移的应用程序? – mliebelt

+0

是的,我的意思是在我的源代码中由Rails生成的URL。是的,它适用于开发,但不适用于生产。我通过rake资产获得资产:预编译。那个新的rails应用程序 –

+0

我使用我的应用程序进行了检查,在HTML代码和文件路径中散列值相同。你是否检查过每个文件包含指纹的'manifest.yml'?你在生产中使用哪个服务器? – mliebelt

回答

0

你运行'rake assets:clean assets:precompile'吗?另外,如果您使用的是GIT,那么您也需要'git rm'旧版本的资产。如果您通过推送工作区(例如Heroku)更新生产环境,则需要为其他版本控制系统执行类似操作。

在您的开发环境中,资产直接从您的源代码库中获取 - 因此如果您更改它们,则无需再次预编译(在开发过程中节省您的时间)。但是,由于这个原因,你可以很容易地找到资产。

0

重新启动应用程序为我解决了它。

E.g.在应用程序的根目录:

touch tmp/restart.txt 

或Capistrano的3的deploy.rb

namespace :deploy do 
    desc 'Restart application' 
    task :restart do 
    on roles(:app) do 
     within release_path do 
     execute :touch, 'tmp/restart.txt' 
     end 
    end 
    end 

    after 'deploy:publishing', 'deploy:restart' 
end