application.js не скомпилирован
Я не уверен почему, но всякий раз, когда я бегу rake assets:precompile
application.js не компилируется. Я получаю ошибку "application.js not precompiled" в производственном режиме.
Вот мой Gemfile, если он что-то значит:
source 'http://rubygems.org'
gem 'rails', '3.1.1'
gem 'eventmachine', '1.0.0.beta.4.1'
gem 'thin'
gem 'mysql'
gem 'win32-open3-19'
gem 'paperclip', '2.3.8'
#gem 'jammit'
gem 'jsmin'
gem 'will_paginate'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', '~> 3.1.4'
gem 'coffee-rails', '~> 3.1.1'
gem 'uglifier', '>= 1.0.3'
end
gem 'jquery-rails'
# To use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.0.0'
# Use unicorn as the web server
# gem 'unicorn'
# Deploy with Capistrano
# gem 'capistrano'
# To use debugger
# gem 'ruby-debug19', :require => 'ruby-debug'
group :test do
# Pretty printed test output
gem 'turn', :require => false
end
Я сделал новое приложение rails и проверил ресурсы рейка: прекомпиляция и она работает. Единственное различие между этими двумя приложениями с точки зрения соответствующих файлов состоит в том, какие драгоценности я установил. "application.js" одинаково для обоих приложений... как и файлы environment.rb.
Также следует отметить... когда я включаю случайный файл.js в свой каталог assets/javascripts и использую "javascript_include_tag:application", один из полученных URL-адресов в режиме разработки выглядит следующим образом: /assets/../javascripts/anytimec.js?body=1
и они явно терпят неудачу с 404. Однако файл application.js указан правильно.
ОБНОВИТЬ:
Глядя на то, что генерирует Sprockets, я заметил, что "логический путь" использует "../javascripts" в расположении. Я проверил это, просмотрев дамп asset_paths.asset_for ('application', 'js') и asset_paths.asset_for ('anytimec', 'js') соответственно. Я также сравнил эти дампы с теми же файлами из свежего приложения. Свежее приложение НЕ добавляет к папке "../javascripts", тогда как мое текущее приложение ДЕЛАЕТ. Это не делает это с файлами CSS или чем-то еще... просто javascript. Это наиболее определенно намекает на основную проблему, но я не знаю, куда идти дальше.
1 ответ
Обнаружив, что это имеет отношение к сбоям Sprockets при чтении папки, специально названной "java", в папке активов, я переименовал ее в "applets", и она начала работать.
Смотрите этот пост для ответа.