部署 求助,Capistrano 部署到服务器上时 assets 文件不全

siyang1982 · 2013年08月28日 · 最后由 siyang1982 回复于 2013年08月29日 · 2541 次阅读

在本机rails s -e production时一切正常。 用 Capistrano deploy 到服务器上后,shared/assets 里文件总是不全,情况如下:

  1. vendor/assets/下的 js、css 文件没有被 compile。

  2. app/assets/下的文件编译后不全: application.js、application.css 有, 但是其他两个 layout 相关 css 只有一个有,另一个没有, 其余 layout 相关 js 文件都没有, gem 里的 assets 文件正常。

尝试了多种方法,还是不行。

用配置

task :precompile, roles: :web, except: {no_release: true} do
  from = source.next_revision(current_revision) if capture("[ -f #{File.join(current_path, 'REVISION')} ] || echo '1'").empty?
  if from.nil? || capture("cd #{latest_release} && #{source.local.log(from)} vendor/assets app/assets lib/assets | wc -l").to_i > 0
    run %Q{cd #{latest_release} && #{rake} RAILS_ENV=#{rails_env} #{asset_env} assets:precompile}
  else
    logger.info "Skipping asset pre-compilation because there were no asset changes."
  end
end

运行后提示

** Skipping asset pre-compilation because there were no asset changes.

vendor 下目录结构: vendor ├── assets │   ├── images │   ├── javascripts │   │   ├── html5.js │   │   ├── jquery-1.10.2.js │   │   ├── jquery.easing-1.3.js │   │   ├── jquery.inview.js │   │   ├── magnific-popup.js │   │   └── skrollr.js │   └── stylesheets │   └── magnific-popup.css └── plugins

看 Ruby China 的配置,那种单独引入的 css, js 文件需要增加到 config.assets.precompile 里面

application.rb

module RubyChina
  class Application < Rails::Application
    ....
    config.assets.precompile += %w(application.css app.js topics.css topics.js window.css front.css cpanel.css
        users.css pages.css pages.js notes.css notes.js 
        mobile.css home.css)
  end
end
需要 登录 后方可回复, 如果你还没有账号请 注册新账号