Heroku Ruby on Rails应用程序不会更新公共/资产目录中的非消化资产

时间:2015-02-27 21:11:09

标签: javascript ruby-on-rails ruby ruby-on-rails-3 heroku

我在heroku上有Ruby on Rails应用程序。

我们正在使用ruby 2.1.5

ruby 2.1.5p273 (2014-11-13 revision 48405) [x86_64-linux]

Ruby on Rails 4.1.1

的Gemfile: http://codepad.org/6YwcIHYL

链轮版本(摘自gemfile.lock):

sprockets (2.11.0)
  hike (~> 1.2)
  multi_json (~> 1.0)
  rack (~> 1.0)
  tilt (~> 1.1, != 1.3.0)
sprockets-rails (2.2.4)
  actionpack (>= 3.0)
  activesupport (>= 3.0)
  sprockets (>= 2.8, < 4.0)

当然我们正在使用消化资产

e.g。 application-d99ed24f47c5c39b96889148558cb16c.js - 他们正在工作

除此之外,我使用非消化资产进行CKEditor,

我把它们放在RAILS_ROOT/public/assets目录

因此/assets/ckeditor/config.js应指向RAILS_ROOT/public/assets/ckeditor/config.js


问题

我无法更新public/assets

下的资产

我从CKEditor更新了一个文件,但是当我:

时它没有显示更改
  • 通过CURL获取文件
  • 在Chrome的隐身窗口中查看来源(隐身 - &gt;&#39;避免&#39;缓存)

我提交了更改,建立在CircleCI传递(持续集成服务)之上。自动部署更新登台服务器。

但我仍然得到旧文件。

此外,我使用heroku run bash

查看了文件来源
heroku run bash
cd public/assets/ckeditor
cat config.js

它返回旧版本。通过各种tricks进行更改,例如: rm cp echo NEW_CONTENT >> NEW_FILE.js也无法正常工作。

Heroku返回旧版本......

PS 将CKEditor从public/assets/ckeditor移至app/assets/ckeditor并未解决问题。


更新

application.js内容:http://codepad.org/ZpBruQt9

但CKeditor config.js档案(public/assets/ckeditor/config.js)未包含在application.js中。

这是非消化资产:)

1 个答案:

答案 0 :(得分:1)

Heroku不允许您将文件存储在其dyno中,您可能编辑的任何文件每15分钟重置一次。所以通过rm,cp,echo直接改变它就不会有诀窍。该文件必须由您的git分支跟踪。

我建议使用ckeditor gem,它可以很好地使用链轮(https://github.com/galetahub/ckeditor),这应该可以帮助你解决问题。