2013-04-24 5 views
10

Я пытаюсь заставить RoR работать с Passenger и Nginx. Человек был приключением. Я, наконец, получил сервер, и на нем размещен тестовый сайт. Я столкнулся с ошибкой с активами. Я не могу скомпилировать application.js, используя bundle exec rake assets:precompile. Вот результаты с --trace:связка exec rake assets: precompile

$ bundle exec rake assets:precompile --trace 
** Invoke assets:precompile (first_time) 
** Execute assets:precompile 
/Users/pstachof/.rvm/rubies/ruby-1.9.3-head/bin/ruby /Users/pstachof/.rvm/gems/[email protected]/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets --trace 
** Invoke assets:precompile:all (first_time) 
** Execute assets:precompile:all 
** Invoke assets:precompile:primary (first_time) 
** Invoke assets:environment (first_time) 
** Execute assets:environment 
** Invoke environment (first_time) 
** Execute environment 
** Invoke tmp:cache:clear (first_time) 
** Execute tmp:cache:clear 
** Execute assets:precompile:primary 
rake aborted! 
TypeError: 'undefined' is not a function (evaluating 'define.globalDomain.require.bind(define.globalDomain)') 
    (in /Users/pstachof/.webserver/sites/stachtest1/app/assets/javascripts/application.js) 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/gems/execjs-1.4.0/lib/execjs/external_runtime.rb:68:in `extract_result' 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/gems/execjs-1.4.0/lib/execjs/external_runtime.rb:28:in `block in exec' 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/gems/execjs-1.4.0/lib/execjs/external_runtime.rb:41:in `compile_to_tempfile' 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/gems/execjs-1.4.0/lib/execjs/external_runtime.rb:27:in `exec' 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/gems/uglifier-2.0.1/lib/uglifier.rb:167:in `really_compile' 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/gems/uglifier-2.0.1/lib/uglifier.rb:95:in `compile' 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/gems/actionpack-3.2.13/lib/sprockets/compressors.rb:74:in `compress' 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/gems/sprockets-2.2.2/lib/sprockets/processing.rb:265:in `block in js_compressor=' 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/gems/sprockets-2.2.2/lib/sprockets/processor.rb:29:in `call' 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/gems/sprockets-2.2.2/lib/sprockets/processor.rb:29:in `evaluate' 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/gems/tilt-1.3.7/lib/tilt/template.rb:77:in `render' 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/gems/sprockets-2.2.2/lib/sprockets/context.rb:193:in `block in evaluate' 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/gems/sprockets-2.2.2/lib/sprockets/context.rb:190:in `each' 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/gems/sprockets-2.2.2/lib/sprockets/context.rb:190:in `evaluate' 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/gems/sprockets-2.2.2/lib/sprockets/bundled_asset.rb:26:in `initialize' 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/gems/sprockets-2.2.2/lib/sprockets/base.rb:252:in `new' 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/gems/sprockets-2.2.2/lib/sprockets/base.rb:252:in `build_asset' 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/gems/sprockets-2.2.2/lib/sprockets/index.rb:93:in `block in build_asset' 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/gems/sprockets-2.2.2/lib/sprockets/caching.rb:19:in `cache_asset' 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/gems/sprockets-2.2.2/lib/sprockets/index.rb:92:in `build_asset' 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/gems/sprockets-2.2.2/lib/sprockets/base.rb:169:in `find_asset' 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/gems/sprockets-2.2.2/lib/sprockets/index.rb:60:in `find_asset' 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/gems/actionpack-3.2.13/lib/sprockets/static_compiler.rb:19:in `block in compile' 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/gems/sprockets-2.2.2/lib/sprockets/base.rb:219:in `block in each_logical_path' 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/gems/sprockets-2.2.2/lib/sprockets/base.rb:206:in `block (2 levels) in each_file' 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/gems/sprockets-2.2.2/lib/sprockets/base.rb:196:in `each' 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/gems/sprockets-2.2.2/lib/sprockets/base.rb:196:in `each_entry' 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/gems/sprockets-2.2.2/lib/sprockets/base.rb:204:in `block in each_file' 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/gems/sprockets-2.2.2/lib/sprockets/base.rb:203:in `each' 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/gems/sprockets-2.2.2/lib/sprockets/base.rb:203:in `each_file' 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/gems/sprockets-2.2.2/lib/sprockets/base.rb:217:in `each_logical_path' 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/gems/actionpack-3.2.13/lib/sprockets/static_compiler.rb:18:in `compile' 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/gems/actionpack-3.2.13/lib/sprockets/assets.rake:56:in `internal_precompile' 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/gems/actionpack-3.2.13/lib/sprockets/assets.rake:70:in `block (3 levels) in <top (required)>' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/task.rb:246:in `call' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/task.rb:246:in `block in execute' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/task.rb:241:in `each' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/task.rb:241:in `execute' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/task.rb:184:in `block in invoke_with_call_chain' 
/Users/pstachof/.rvm/rubies/ruby-1.9.3-head/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/task.rb:177:in `invoke_with_call_chain' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/task.rb:170:in `invoke' 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/gems/actionpack-3.2.13/lib/sprockets/assets.rake:60:in `block (3 levels) in <top (required)>' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/task.rb:246:in `call' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/task.rb:246:in `block in execute' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/task.rb:241:in `each' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/task.rb:241:in `execute' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/task.rb:184:in `block in invoke_with_call_chain' 
/Users/pstachof/.rvm/rubies/ruby-1.9.3-head/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/task.rb:177:in `invoke_with_call_chain' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/task.rb:170:in `invoke' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/application.rb:143:in `invoke_task' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/application.rb:101:in `block (2 levels) in top_level' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/application.rb:101:in `each' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/application.rb:101:in `block in top_level' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/application.rb:110:in `run_with_threads' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/application.rb:95:in `top_level' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/application.rb:73:in `block in run' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/application.rb:160:in `standard_exception_handling' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/application.rb:70:in `run' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/bin/rake:33:in `<top (required)>' 
/Users/pstachof/.rvm/gems/[email protected]/bin/rake:23:in `load' 
/Users/pstachof/.rvm/gems/[email protected]/bin/rake:23:in `<main>' 
Tasks: TOP => assets:precompile:primary 
rake aborted! 
Command failed with status (1): [/Users/pstachof/.rvm/rubies/ruby-1.9.3-hea...] 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/file_utils.rb:53:in `block in create_shell_runner' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/file_utils.rb:45:in `call' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/file_utils.rb:45:in `sh' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/file_utils_ext.rb:37:in `sh' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/file_utils.rb:80:in `ruby' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/file_utils_ext.rb:37:in `ruby' 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/gems/actionpack-3.2.13/lib/sprockets/assets.rake:12:in `ruby_rake_task' 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/gems/actionpack-3.2.13/lib/sprockets/assets.rake:21:in `invoke_or_reboot_rake_task' 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/gems/actionpack-3.2.13/lib/sprockets/assets.rake:29:in `block (2 levels) in <top (required)>' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/task.rb:246:in `call' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/task.rb:246:in `block in execute' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/task.rb:241:in `each' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/task.rb:241:in `execute' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/task.rb:184:in `block in invoke_with_call_chain' 
/Users/pstachof/.rvm/rubies/ruby-1.9.3-head/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/task.rb:177:in `invoke_with_call_chain' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/task.rb:170:in `invoke' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/application.rb:143:in `invoke_task' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/application.rb:101:in `block (2 levels) in top_level' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/application.rb:101:in `each' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/application.rb:101:in `block in top_level' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/application.rb:110:in `run_with_threads' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/application.rb:95:in `top_level' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/application.rb:73:in `block in run' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/application.rb:160:in `standard_exception_handling' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/application.rb:70:in `run' 
/Users/pstachof/.rvm/gems/[email protected]/gems/rake-10.0.4/bin/rake:33:in `<top (required)>' 
/Users/pstachof/.rvm/gems/[email protected]/bin/rake:23:in `load' 
/Users/pstachof/.rvm/gems/[email protected]/bin/rake:23:in `<main>' 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/bin/ruby_noexec_wrapper:14:in `eval' 
/Users/pstachof/.rvm/gems/ruby-1.9.3-head/bin/ruby_noexec_wrapper:14:in `<main>' 
Tasks: TOP => assets:precompile 

Если установить config.assets.compile = true в config/environments/production.rb и перезапустить сервер перезагрузить сайт я получаю следующее в production.log

Connecting to database specified by database.yml 
Started GET "/" for 98.156.89.130 at 2013-04-23 22:45:35 -0500 
Processing by HomeController#welcome as HTML 
    Rendered home/welcome.html.erb within layouts/application (10.7ms) 
Completed 500 Internal Server Error in 77ms 

ActionView::Template::Error (application.js isn't precompiled): 
    3: <head> 
    4: <title>Stachtest1</title> 
    5: <%= stylesheet_link_tag "application", :media => "all" %> 
    6: <%= javascript_include_tag "application" %> 
    7: <%= csrf_meta_tags %> 
    8: </head> 
    9: <body> 
    app/views/layouts/application.html.erb:6:in `_app_views_layouts_application_html_erb__451492169_16346550' 

Если удалить приложение .js (из которого я вообще не модифицировался) из каталога assets/javascript и скомпилировать все идет гладко. Я также попытался скомпилировать файл в каталоге assests/javascript, но удалил весь текст и все еще не удалось.

Я использую рельсы 3.2.13, рубин 1.9.3 и следующие камни установлены локально

*** LOCAL GEMS *** 

actionmailer (3.2.13) 
actionpack (3.2.13) 
activemodel (3.2.13) 
activerecord (3.2.13) 
activeresource (3.2.13) 
activesupport (3.2.13) 
arel (3.0.2) 
bigdecimal (1.1.0) 
builder (3.0.4) 
bundler (1.3.5) 
coffee-rails (3.2.2) 
coffee-script (2.2.0) 
coffee-script-source (1.6.2) 
daemon_controller (1.1.2) 
erubis (2.7.0) 
execjs (1.4.0) 
fastthread (1.0.7) 
hike (1.2.2) 
i18n (0.6.1) 
io-console (0.3) 
journey (1.0.4) 
jquery-rails (2.2.1) 
json (1.7.7, 1.5.5) 
mail (2.5.3) 
mime-types (1.23) 
minitest (2.5.1) 
multi_json (1.7.2) 
passenger (3.0.19) 
polyglot (0.3.3) 
rack (1.4.5) 
rack-cache (1.2) 
rack-ssl (1.3.3) 
rack-test (0.6.2) 
rails (3.2.13) 
railties (3.2.13) 
rake (10.0.4, 0.9.2.2) 
rdoc (3.12.2, 3.9.5) 
rubygems-bundler (1.1.1) 
rvm (1.11.3.7) 
sass (3.2.8) 
sass-rails (3.2.6) 
sprockets (2.2.2) 
sqlite3 (1.3.7) 
thor (0.18.1) 
tilt (1.3.7) 
treetop (1.4.12) 
tzinfo (0.3.37) 
uglifier (2.0.1) 

Вот файл в application.js

// This is a manifest file that'll be compiled into application.js, which will include all the files 
// listed below. 
// 
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, 
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path. 
// 
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the 
// the compiled file. 
// 
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD 
// GO AFTER THE REQUIRES BELOW. 
// 
//= require jquery 
//= require jquery_ujs 
//= require_tree 

Как я продолжаю играть вокруг с этой настройкой я обнаружил, что, хотя он компилирует активы без файла application.js в каталоге assets/javascript, и кажется, что css правильно компилируется, он не отображается на веб-странице после обновления сервера и сайта. Если я положу стиль непосредственно на веб-страницу, он будет выглядеть так, как должен.

Вот связанные с ним файлы: application.html.erb

<!DOCTYPE html> 
<html> 
<head> 
    <title>Stachtest1</title> 
    <%= stylesheet_link_tag "application", :media => "all" %> 
    <%= csrf_meta_tags %> 
</head> 
<body> 
    <div id="content"> 
     Does this work... 
    </div> 

    <%= yield %> 

    <div style="border: 1px solid #000;"> 
     This is a test to see about some styles 
    </div> 
</body> 
</html> 

активы/таблицы стилей/application.css

.content 
{ 
    border: 1px solid #999; 
    padding: 5px; 
} 

общественности/application.css

.content{border:1px solid #999;padding:5px} 

I я не уверен, что это отдельный вопрос или нет, если так я могу вытащить его, но хочу добавьте его на всякий случай.

Я как бы дошел до конца своих идей. Будем очень благодарны за любые идеи или предложения. Если мне не хватает какой-либо информации, пожалуйста, сообщите мне, и я могу заполнить пробелы, насколько это возможно.

Спасибо, Патрик

+2

Делитесь файлом приложения.js. –

+1

Я включил содержимое файла application.js. – Patrick

+1

попытайтесь запустить с config.assets.precompile + = ['application.js'] в config/environment/production.rb –

ответ

0

проверка удаления форму ниже линии application.js

//= require_tree 

require_tree загружает все файлы в приложение/JavaScripts реж рекурсивно

Если это работает там некоторая проблема с одним из файлов javascript в каталоге app/assets/javascripts

che ck все файлы в directrory или

требуют файлов один за другим в приложении.js

//= require js_file_name 
+0

Это то, что я думал, но я фактически взял весь текст из файла, вместе со всеми из // = require's и все еще получил ошибку. Благодарю вас за предложение. – Patrick

0

Я видел эту ошибку при обновлении драгоценных камней в старом уже развернутом приложении. Я сузил его до uglifier, был повышен с 1.3.0 до 2.0.1. В соответствии с его README ему нужен переводчик JS:

Убедитесь, что в вашей среде есть интерпретатор JavaScript, поддерживаемый ExecJS. Установка драгоценного камня из термобары - это безопасный выбор и наличие узла в PATH тоже.

Но это не сложная зависимость, поэтому она не попала в сеть. Не желая продолжать, что совсем еще, я переключился uglifier обратно 1.3.0 в Gemfile:

gem 'uglifier', '1.3.0' 

и все было хорошо.

+0

Я выстрелил, но получил тот же результат. Спасибо за подсказку. – Patrick

Смежные вопросы