2016-06-28 27 views
0

我在CentOS 6.6 Linux上使用RubyOnRails 4.2.0構建網站。 我無法預先編譯CoffeeScript資產。 這似乎是寶石「therubyracer」運行時發生的錯誤。 僅當CoffeeScript不存在時,預編譯纔會成功。Rails 4.2.0資產預編譯錯誤「錯誤的參數類型無(預期的數據)」

我使用gem「therubyracer」ver.0.11.0beta8和gem「libv8」ver.3.11.8.3。 如何解決它? 謝謝。

架構

# bundle exec ruby -rubygems -e 'puts Gem::Platform.new(RUBY_PLATFORM)' 
x86_64-linux 

Rails.application.config.assets

irb(main):001:0> y Rails.application.config.assets.compile 
--- true 
... 
=> nil 
irb(main):002:0> 
irb(main):003:0* 
irb(main):004:0* y Rails.application.config.assets.digest 
--- true 
... 
=> nil 
irb(main):005:0> y Rails.application.config.assets.enabled 
--- true 
... 
=> nil 
irb(main):006:0> 
irb(main):011:0* y Rails.application.config.assets.paths 
--- 
- "/opt/redmine-3.0.1/app/assets/javascripts" 
- "/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/websocket-rails-0.7.0/lib/assets/javascripts" 
- "/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/jquery-rails-3.1.2/vendor/assets/javascripts" 
- "/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/coffee-rails-4.1.1/lib/assets/javascripts" 
=> nil 
irb(main):012:0> 
irb(main):013:0* y Rails.application.config.assets.precompile 
--- 
- !ruby/object:Proc {} 
- !ruby/regexp /(?:¥/|¥¥|¥A)application¥.(css|js)$/ 
- "*.coffee" 
- "*.js" 
- "*.jpg" 
- "*.png" 
- "*.ttf" 
=> nil 
irb(main):014:0> 
irb(main):015:0* y Rails.application.config.assets.prefix 
--- "/assets" 
=> nil 
irb(main):016:0> 

資產目錄

# cat app/assets/javascripts/application.js 
//= require websocket_rails/main 

# ls -ltr /opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/websocket-rails-0.7.0/lib/assets/javascripts/ 
合計 4 
drwxr-xr-x 2 root root 4096 6月 26 18:46 2016 websocket_rails 

# ls -ltr /opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/websocket-rails-0.7.0/lib/assets/javascripts/websocket_rails/ 
合計 32 
-rw-r--r-- 1 root root 1742 6月 19 17:53 2016 http_connection.js.coffee 
-rw-r--r-- 1 root root 995 6月 19 17:53 2016 event.js.coffee 
-rw-r--r-- 1 root root 2292 6月 19 17:53 2016 channel.js.coffee 
-rw-r--r-- 1 root root 1237 6月 19 17:53 2016 abstract_connection.js.coffee 
-rw-r--r-- 1 root root 4515 6月 19 17:53 2016 websocket_rails.js.coffee 
-rw-r--r-- 1 root root 857 6月 19 17:53 2016 websocket_connection.js.coffee 
-rw-r--r-- 1 root root 171 6月 19 17:53 2016 main.js 
# cat /opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/websocket-rails-0.7.0/lib/assets/javascripts/websocket_rails/main.js 
//= require ./websocket_rails 
//= require ./event 
//= require ./abstract_connection 
//= require ./http_connection 
//= require ./websocket_connection 
//= require ./channel 

耙資產:預編譯

# RAILS_ENV=production bundle exec rake assets:precompile --trace 
[DEPRECATION] requiring "RMagick" is deprecated. Use "rmagick" instead 
** Invoke assets:precompile (first_time) 
** Invoke assets:environment (first_time) 
** Execute assets:environment 
** Invoke environment (first_time) 
** Execute environment 
** Execute assets:precompile 
rake aborted! 
TypeError: wrong argument type nil (expected Data) 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/therubyracer-0.11.0beta8-x86_64-linux/lib/v8/context.rb:66:in `New' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/therubyracer-0.11.0beta8-x86_64-linux/lib/v8/context.rb:66:in `initialize' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/execjs-2.6.0/lib/execjs/ruby_racer_runtime.rb:10:in `new' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/execjs-2.6.0/lib/execjs/ruby_racer_runtime.rb:10:in `block in initialize' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/execjs-2.6.0/lib/execjs/ruby_racer_runtime.rb:75:in `block in lock' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/execjs-2.6.0/lib/execjs/ruby_racer_runtime.rb:73:in `call' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/execjs-2.6.0/lib/execjs/ruby_racer_runtime.rb:73:in `Locker' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/execjs-2.6.0/lib/execjs/ruby_racer_runtime.rb:73:in `lock' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/execjs-2.6.0/lib/execjs/ruby_racer_runtime.rb:9:in `initialize' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/execjs-2.6.0/lib/execjs/runtime.rb:44:in `new' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/execjs-2.6.0/lib/execjs/runtime.rb:44:in `compile' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/execjs-2.6.0/lib/execjs/module.rb:27:in `compile' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/coffee-script-2.4.1/lib/coffee_script.rb:50:in `context' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/coffee-script-2.4.1/lib/coffee_script.rb:78:in `compile' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/coffee_script_processor.rb:21:in `block in call' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/cache.rb:85:in `fetch' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/coffee_script_processor.rb:20:in `call' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/processor_utils.rb:73:in `call_processor' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/processor_utils.rb:55:in `block in call_processors' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/processor_utils.rb:54:in `reverse_each' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/processor_utils.rb:54:in `call_processors' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/loader.rb:103:in `load_asset_by_uri' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/loader.rb:40:in `block in load' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/loader.rb:170:in `fetch_asset_from_dependency_cache' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/loader.rb:33:in `load' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/cached_environment.rb:20:in `block in initialize' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/cached_environment.rb:47:in `yield' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/cached_environment.rb:47:in `load' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/bundle.rb:23:in `block in call' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/utils.rb:183:in `dfs' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/bundle.rb:24:in `call' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/processor_utils.rb:73:in `call_processor' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/processor_utils.rb:55:in `block in call_processors' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/processor_utils.rb:54:in `reverse_each' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/processor_utils.rb:54:in `call_processors' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/loader.rb:103:in `load_asset_by_uri' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/loader.rb:40:in `block in load' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/loader.rb:170:in `fetch_asset_from_dependency_cache' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/loader.rb:33:in `load' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/cached_environment.rb:20:in `block in initialize' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/cached_environment.rb:47:in `yield' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/cached_environment.rb:47:in `load' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/base.rb:63:in `find_asset' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/base.rb:70:in `find_all_linked_assets' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/manifest.rb:138:in `block in find' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/legacy.rb:114:in `block (2 levels) in logical_paths' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/path_utils.rb:223:in `block in stat_tree' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/path_utils.rb:207:in `block in stat_directory' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/path_utils.rb:204:in `each' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/path_utils.rb:204:in `stat_directory' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/path_utils.rb:222:in `stat_tree' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/legacy.rb:105:in `each' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/legacy.rb:105:in `block in logical_paths' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/legacy.rb:104:in `each' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/legacy.rb:104:in `logical_paths' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/manifest.rb:136:in `find' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/sprockets/manifest.rb:162:in `compile' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-rails-2.2.4/lib/sprockets/rails/task.rb:70:in `block (3 levels) in define' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-3.0.0/lib/rake/sprocketstask.rb:147:in `with_logger' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/sprockets-rails-2.2.4/lib/sprockets/rails/task.rb:69:in `block (2 levels) in define' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/rake-10.4.2/lib/rake/task.rb:240:in `call' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/rake-10.4.2/lib/rake/task.rb:240:in `block in execute' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/rake-10.4.2/lib/rake/task.rb:235:in `each' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/rake-10.4.2/lib/rake/task.rb:235:in `execute' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/rake-10.4.2/lib/rake/task.rb:179:in `block in invoke_with_call_chain' 
/usr/local/lib/ruby/2.1.0/monitor.rb:211:in `mon_synchronize' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/rake-10.4.2/lib/rake/task.rb:172:in `invoke_with_call_chain' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/rake-10.4.2/lib/rake/task.rb:165:in `invoke' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/rake-10.4.2/lib/rake/application.rb:150:in `invoke_task' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/rake-10.4.2/lib/rake/application.rb:106:in `block (2 levels) in top_level' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/rake-10.4.2/lib/rake/application.rb:106:in `each' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/rake-10.4.2/lib/rake/application.rb:106:in `block in top_level' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/rake-10.4.2/lib/rake/application.rb:115:in `run_with_threads' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/rake-10.4.2/lib/rake/application.rb:100:in `top_level' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/rake-10.4.2/lib/rake/application.rb:78:in `block in run' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/rake-10.4.2/lib/rake/application.rb:176:in `standard_exception_handling' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/rake-10.4.2/lib/rake/application.rb:75:in `run' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/gems/rake-10.4.2/bin/rake:33:in `<top (required)>' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/bin/rake:23:in `load' 
/opt/redmine-3.0.1/vendor/bundle/ruby/2.1.0/bin/rake:23:in `<main>' 
Tasks: TOP => assets:precompile 
# 

回答

0

libv8維護者在這裏。

您使用的libv8和therubyracer的版本很古老,請考慮更新到最新發布的版本。如果您繼續收到錯誤,請考慮在github的therubyracer's/libv8的問題跟蹤器中開放一個問題。

作爲一個方面說明,您應該考慮先問問項目的維護人員,例如通過他們的問題跟蹤器,然後在SO中拍攝問題。如果我不是偶然在這裏尋找最近關於libv8的問題,你的問題可能還是沒有答案。