我被rails应用程序的生产环境卡住了,因为我的资产没有编译。当我使用
rvmsudo bundle exec rake assets:precompile RAILS_ENV=production --trace
它抛出rake aborted! Sass::SyntaxError: Undefined variable: "$alert-padding"
这是我的Gemfile:
source 'https://rubygems.org'
gem 'rails', '4.2.3'
gem 'mysql2', '~> 0.3.11'
gem 'jquery-rails'
gem 'jquery-ui-rails'
gem 'sass-rails', '~> 5.0'
gem 'bootstrap-sass', '~> 3.2.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.1.0'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0', group: :doc
gem 'haml'
gem 'haml-rails'
gem 'devise', github: 'plataformatec/devise'
gem 'html2haml'
gem 'simple_form'
gem 'validates_formatting_of'
gem 'tzinfo-data'
gem 'therubyracer', platforms: :ruby
gem 'twitter-bootstrap-rails'
gem 'jquery-validation-rails'
gem 'sprockets-rails', :require => 'sprockets/railtie'
gem 'jquery-turbolinks'
gem 'paperclip'
gem 'fancybox-rails'
gem 'css3-progress-bar-rails'
group :development do
gem 'spring'
gem 'pry-rails'
gem 'better_errors'
end
group :development, :test do
gem 'rspec-rails'
gem 'factory_girl_rails'
end
gem 'delayed_job_active_record'
# Need daemons to start delayed_job
gem 'daemons'
gem 'rails_config', '~> 0.4.2'
gem 'cancan'
gem 'two_factor_authentication'
gem 'twilio-ruby'
gem 'binding_of_caller'
gem 'rest-client'这是我的porduction.rb
Rails.application.configure do
config.cache_classes = true
config.eager_load = true
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
config.serve_static_files = true
config.assets.js_compressor = :uglifier
config.assets.css_compressor = :sass
config.assets.compile = false
config.assets.compress = false
config.assets.digest = true
config.log_level = :debug
config.action_mailer.perform_deliveries = true
config.action_mailer.delivery_method = :smtp
config.action_mailer.raise_delivery_errors = true
config.i18n.fallbacks = true
config.active_support.deprecation = :notify
config.action_mailer.default_url_options = { :host => Settings.PROD_URL }
config.log_formatter = ::Logger::Formatter.new
config.active_record.dump_schema_after_migration = false
end和application.css:
/*
*= require_tree .
*= require_self
*/那么,为什么我在编译的时候得到了rake aborted! Sass::SyntaxError: Undefined variable: "$alert-padding"。我的产品工作正常,但没有css加载到它。
发布于 2015-12-29 13:31:37
在定义之前使用$alert-padding变量。这可能是由于application.css中css文件的顺序错误造成的。require_tree按照字母顺序(我猜)加载当前文件夹中的所有文件,但您需要按特定顺序加载某些样式。
看起来你使用的是bootstrap-sass gem。考虑gem的自述文件中的以下说明:https://github.com/twbs/bootstrap-sass#a-ruby-on-rails您需要将application.css重命名为application.scss,并使用@import代替require。
发布于 2015-12-29 21:56:46
使用SASS时,您必须在调用变量之前包含变量。
Sprockets按字母顺序包含文件
这有一个问题,文件是按字母顺序排列的。如果你的目录有jquery-ui.js和jquery.min.js,那么链轮在需要jquery之前需要jquery-ui.js,这是不会起作用的(因为jquery-ui依赖于jquery)。
这意味着如果您正在使用variables.sass (或类似的),您将希望重命名它,或者显式地包含它:
/*
*= require variables
*= require_tree .
*= require_self
*= stub variables
*/更好的方法(因为您使用的是SASS),使用@import指令:
#app/assets/stylesheets/application.sass
@import variables
@import *发布于 2018-01-26 03:03:49
如果您使用的是scss而不是css,只需在您的config/application.rb中添加这些行即可。
config.assets.precompile << %w( *.scss *.js )https://stackoverflow.com/questions/34504913
复制相似问题