spohlenz / tinymce-rails

Integration of TinyMCE with the Rails asset pipeline
Other
815 stars 256 forks source link

compile method doesn't work #183

Open lanadz-shopify opened 9 years ago

lanadz-shopify commented 9 years ago

Deployment fails with compile method while running assets::precompile task on server

config.tinymce.install = :compile

copy method works fine.

Here is log from local machine, error on server looks the same.

...
I, [2015-09-01T09:11:43.691121 #63657]  INFO -- : Creating symlink /Users/svitlanadzyuban/projects/Freelance/public/assets/tinymce/skins/lightgray/skin.min.css
I, [2015-09-01T09:11:43.691564 #63657]  INFO -- : Creating symlink /Users/svitlanadzyuban/projects/Freelance/public/assets/tinymce/themes/modern/theme.js
I, [2015-09-01T09:11:43.694187 #63657]  INFO -- : Removing digest from /Users/svitlanadzyuban/projects/Freelance/public/assets/tinymce/plugins/uploadimage/langs/de-2347dc24a7a325d7709af0e12d99095c.js
rake aborted!
ArgumentError: same file: /Users/svitlanadzyuban/projects/Freelance/public/assets/tinymce/plugins/uploadimage/langs/de-2347dc24a7a325d7709af0e12d99095c.js and /Users/svitlanadzyuban/projects/Freelance/public/assets/tinymce/plugins/uploadimage/langs/de.js
/Users/svitlanadzyuban/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/fileutils.rb:1572:in `block in fu_each_src_dest'
/Users/svitlanadzyuban/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/fileutils.rb:1589:in `fu_each_src_dest0'
/Users/svitlanadzyuban/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/fileutils.rb:1571:in `fu_each_src_dest'
/Users/svitlanadzyuban/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/fileutils.rb:514:in `mv'
/Users/svitlanadzyuban/.rvm/gems/ruby-2.1.3/gems/tinymce-rails-4.2.3/lib/tinymce/rails/asset_installer/copy.rb:42:in `block in move_asset'
/Users/svitlanadzyuban/.rvm/gems/ruby-2.1.3/gems/tinymce-rails-4.2.3/lib/tinymce/rails/asset_installer.rb:58:in `with_asset'
/Users/svitlanadzyuban/.rvm/gems/ruby-2.1.3/gems/tinymce-rails-4.2.3/lib/tinymce/rails/asset_installer/copy.rb:5:in `with_asset'
/Users/svitlanadzyuban/.rvm/gems/ruby-2.1.3/gems/tinymce-rails-4.2.3/lib/tinymce/rails/asset_installer/copy.rb:40:in `move_asset'
/Users/svitlanadzyuban/.rvm/gems/ruby-2.1.3/gems/tinymce-rails-4.2.3/lib/tinymce/rails/asset_installer/copy.rb:23:in `block (2 levels) in cleanup_assets'
/Users/svitlanadzyuban/.rvm/gems/ruby-2.1.3/gems/tinymce-rails-4.2.3/lib/tinymce/rails/asset_manifest.rb:111:in `block in remove_digest'
/Users/svitlanadzyuban/.rvm/gems/ruby-2.1.3/gems/tinymce-rails-4.2.3/lib/tinymce/rails/asset_manifest.rb:23:in `asset_path'
/Users/svitlanadzyuban/.rvm/gems/ruby-2.1.3/gems/tinymce-rails-4.2.3/lib/tinymce/rails/asset_manifest.rb:107:in `remove_digest'
/Users/svitlanadzyuban/.rvm/gems/ruby-2.1.3/gems/tinymce-rails-4.2.3/lib/tinymce/rails/asset_installer/copy.rb:22:in `block in cleanup_assets'
/Users/svitlanadzyuban/.rvm/gems/ruby-2.1.3/gems/tinymce-rails-4.2.3/lib/tinymce/rails/asset_manifest.rb:16:in `block in each'
/Users/svitlanadzyuban/.rvm/gems/ruby-2.1.3/gems/tinymce-rails-4.2.3/lib/tinymce/rails/asset_manifest.rb:14:in `each_key'
/Users/svitlanadzyuban/.rvm/gems/ruby-2.1.3/gems/tinymce-rails-4.2.3/lib/tinymce/rails/asset_manifest.rb:14:in `each'
/Users/svitlanadzyuban/.rvm/gems/ruby-2.1.3/gems/tinymce-rails-4.2.3/lib/tinymce/rails/asset_installer/copy.rb:21:in `cleanup_assets'
/Users/svitlanadzyuban/.rvm/gems/ruby-2.1.3/gems/tinymce-rails-4.2.3/lib/tinymce/rails/asset_installer/copy.rb:12:in `call'
/Users/svitlanadzyuban/.rvm/gems/ruby-2.1.3/gems/tinymce-rails-4.2.3/lib/tinymce/rails/asset_installer.rb:22:in `install'
/Users/svitlanadzyuban/.rvm/gems/ruby-2.1.3/gems/tinymce-rails-langs-4.20140129/lib/tasks/assets.rake:12:in `block in <top (required)>'
/Users/svitlanadzyuban/.rvm/gems/ruby-2.1.3/gems/rake-10.3.2/lib/rake/task.rb:240:in `call'
/Users/svitlanadzyuban/.rvm/gems/ruby-2.1.3/gems/rake-10.3.2/lib/rake/task.rb:240:in `block in execute'
/Users/svitlanadzyuban/.rvm/gems/ruby-2.1.3/gems/rake-10.3.2/lib/rake/task.rb:235:in `each'
/Users/svitlanadzyuban/.rvm/gems/ruby-2.1.3/gems/rake-10.3.2/lib/rake/task.rb:235:in `execute'
/Users/svitlanadzyuban/.rvm/gems/ruby-2.1.3/gems/rake-10.3.2/lib/rake/task.rb:179:in `block in invoke_with_call_chain'
/Users/svitlanadzyuban/.rvm/rubies/ruby-2.1.3/lib/ruby/2.1.0/monitor.rb:211:in `mon_synchronize'
/Users/svitlanadzyuban/.rvm/gems/ruby-2.1.3/gems/rake-10.3.2/lib/rake/task.rb:172:in `invoke_with_call_chain'
/Users/svitlanadzyuban/.rvm/gems/ruby-2.1.3/gems/rake-10.3.2/lib/rake/task.rb:165:in `invoke'
/Users/svitlanadzyuban/.rvm/gems/ruby-2.1.3/gems/rake-10.3.2/lib/rake/application.rb:150:in `invoke_task'
/Users/svitlanadzyuban/.rvm/gems/ruby-2.1.3/gems/rake-10.3.2/lib/rake/application.rb:106:in `block (2 levels) in top_level'
/Users/svitlanadzyuban/.rvm/gems/ruby-2.1.3/gems/rake-10.3.2/lib/rake/application.rb:106:in `each'
/Users/svitlanadzyuban/.rvm/gems/ruby-2.1.3/gems/rake-10.3.2/lib/rake/application.rb:106:in `block in top_level'
/Users/svitlanadzyuban/.rvm/gems/ruby-2.1.3/gems/rake-10.3.2/lib/rake/application.rb:115:in `run_with_threads'
/Users/svitlanadzyuban/.rvm/gems/ruby-2.1.3/gems/rake-10.3.2/lib/rake/application.rb:100:in `top_level'
/Users/svitlanadzyuban/.rvm/gems/ruby-2.1.3/gems/rake-10.3.2/lib/rake/application.rb:78:in `block in run'
/Users/svitlanadzyuban/.rvm/gems/ruby-2.1.3/gems/rake-10.3.2/lib/rake/application.rb:176:in `standard_exception_handling'
/Users/svitlanadzyuban/.rvm/gems/ruby-2.1.3/gems/rake-10.3.2/lib/rake/application.rb:75:in `run'
/Users/svitlanadzyuban/.rvm/gems/ruby-2.1.3/gems/rake-10.3.2/bin/rake:33:in `<top (required)>'
/Users/svitlanadzyuban/.rvm/gems/ruby-2.1.3/bin/rake:23:in `load'
/Users/svitlanadzyuban/.rvm/gems/ruby-2.1.3/bin/rake:23:in `<main>'
/Users/svitlanadzyuban/.rvm/gems/ruby-2.1.3/bin/ruby_executable_hooks:15:in `eval'
/Users/svitlanadzyuban/.rvm/gems/ruby-2.1.3/bin/ruby_executable_hooks:15:in `<main>'
Tasks: TOP => assets:precompile

Environment details: ruby 2.1.3p242 (2014-09-19 revision 47630) [x86_64-darwin14.0] Rails 4.1.4

Wootenblatz commented 8 years ago

I ran into the same issue today after installing and configuring tinymce-rails-imageupload. The :compile option worked fine for me before this. Below I'll go into a bit more detail about this but tinymce-rails-imageupload ignores the :compile setting and always uses :copy. It has it's own asset task that has not been updated to make use of tinymce-rails' :compile feature. I believe this issue can be closed here and should be opened in the aforementioned gem's repository instead.

This is how I came to the conclusion above:

As you can see in the error messages from sdzyub (which are similar to what I see), the config.tinymce.install setting in application.rb is being ignored: tinymce/rails/asset_installer/copy.rb:42:in 'block in move_asset'

If the :compile setting was being used, I'm pretty sure it should be throwing an error on some line in compile.rb instead.

To test this out, I removed tinymce-rails-imageupload from my Gemfile, ran bundle update and then compiled my assets with config.tinymce.install = :compile in my application.rb. It ran fine.

I switched it to :copy and it failed in the same fashion as above. This confuses me a little as I had no references to the imageupload javascript files in my initializers/assets.rb or in my app/assets/javascripts/*.js files. I double checked that I ran bundle update after commenting out the line in my Gemfile for imageupload. Precompiling with :copy still dies on imageupload JS files. I have no idea how it is picking these up, obviously that gem has something sticking around in my app in a non-obvious place. Or I'm crazy? Anyway...

Earlier I was looking at the tinymce-rails-imageupload repository and I recalled it also has a rake task that was very similar to the one in tinymce-rails. I compared both rake files and saw a clear difference. The imageupload gem's rake task has no code to honor the config.tinymce.install variable in application.rb.

So I forked that gem and replaced the code in lib/tasks/tinymce-uploadimage-assets.rake with what is in the tinymce-assets.rake file. After updating my Gemfile to use my local version and running bundler update, asset pre-compilation worked without an issue. What I did is very simple but you can see my changes here: https://github.com/zkarpinski/tinymce-rails-imageupload/commit/06db01685a708c84625d070f38ad1e74628d07a9

As an aside, using config.tinymce.install = :copy still crashes with the same error for me.

oliveiragabriel07 commented 8 years ago

I have a similar issue but I'm not using tinymce-rails-imageupload gem.

Here is the log from my local machine

ArgumentError: same file: /home/gabriel/odb/workspace/unicv-production/public/assets/tinymce/plugins/iframedialog/plugin-4616fd5b08cc060f90a419b812e44c67b619f2a2614d6a90dcab080430e8e5ea.js and /home/gabriel/odb/workspace/unicv-production/public/assets/tinymce/plugins/iframedialog/plugin.js
/home/gabriel/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/fileutils.rb:1569:in `block in fu_each_src_dest'
/home/gabriel/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/fileutils.rb:1586:in `fu_each_src_dest0'
/home/gabriel/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/fileutils.rb:1568:in `fu_each_src_dest'
/home/gabriel/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/fileutils.rb:516:in `mv'
/home/gabriel/.rvm/gems/ruby-2.2.3@unicv42/gems/tinymce-rails-4.3.2/lib/tinymce/rails/asset_installer/copy.rb:42:in `block in move_asset'
/home/gabriel/.rvm/gems/ruby-2.2.3@unicv42/gems/tinymce-rails-4.3.2/lib/tinymce/rails/asset_installer.rb:58:in `with_asset'
/home/gabriel/.rvm/gems/ruby-2.2.3@unicv42/gems/tinymce-rails-4.3.2/lib/tinymce/rails/asset_installer/copy.rb:5:in `with_asset'
/home/gabriel/.rvm/gems/ruby-2.2.3@unicv42/gems/tinymce-rails-4.3.2/lib/tinymce/rails/asset_installer/copy.rb:40:in `move_asset'
/home/gabriel/.rvm/gems/ruby-2.2.3@unicv42/gems/tinymce-rails-4.3.2/lib/tinymce/rails/asset_installer/copy.rb:23:in `block (2 levels) in cleanup_assets'
/home/gabriel/.rvm/gems/ruby-2.2.3@unicv42/gems/tinymce-rails-4.3.2/lib/tinymce/rails/asset_manifest.rb:111:in `block in remove_digest'
/home/gabriel/.rvm/gems/ruby-2.2.3@unicv42/gems/tinymce-rails-4.3.2/lib/tinymce/rails/asset_manifest.rb:23:in `asset_path'
/home/gabriel/.rvm/gems/ruby-2.2.3@unicv42/gems/tinymce-rails-4.3.2/lib/tinymce/rails/asset_manifest.rb:107:in `remove_digest'
/home/gabriel/.rvm/gems/ruby-2.2.3@unicv42/gems/tinymce-rails-4.3.2/lib/tinymce/rails/asset_installer/copy.rb:22:in `block in cleanup_assets'
/home/gabriel/.rvm/gems/ruby-2.2.3@unicv42/gems/tinymce-rails-4.3.2/lib/tinymce/rails/asset_manifest.rb:16:in `block in each'
/home/gabriel/.rvm/gems/ruby-2.2.3@unicv42/gems/tinymce-rails-4.3.2/lib/tinymce/rails/asset_manifest.rb:14:in `each_key'
/home/gabriel/.rvm/gems/ruby-2.2.3@unicv42/gems/tinymce-rails-4.3.2/lib/tinymce/rails/asset_manifest.rb:14:in `each'
/home/gabriel/.rvm/gems/ruby-2.2.3@unicv42/gems/tinymce-rails-4.3.2/lib/tinymce/rails/asset_installer/copy.rb:21:in `cleanup_assets'
/home/gabriel/.rvm/gems/ruby-2.2.3@unicv42/gems/tinymce-rails-4.3.2/lib/tinymce/rails/asset_installer/copy.rb:12:in `call'
/home/gabriel/.rvm/gems/ruby-2.2.3@unicv42/gems/tinymce-rails-4.3.2/lib/tinymce/rails/asset_installer.rb:22:in `install'
/home/gabriel/.rvm/gems/ruby-2.2.3@unicv42/gems/tinymce-rails-langs-4.20140129/lib/tasks/assets.rake:12:in `block in <top (required)>'

The last line of my log is:

/home/gabriel/.rvm/gems/ruby-2.2.3@unicv42/gems/tinymce-rails-langs-4.20140129/lib/tasks/assets.rake:12:in `block in <top (required)>'

I see the same error on lanadz logs:

/Users/svitlanadzyuban/.rvm/gems/ruby-2.1.3/gems/tinymce-rails-langs-4.20140129/lib/tasks/assets.rake:12:in `block in <top (required)>'

Removing tinymce-rails-langs gem did the trick for me. So I think it has something to do with tinymce-rails-langs rake task.