由于scss,无法将Rails应用程序部署到Heroku

时间:2017-11-23 20:30:43

标签: ruby-on-rails heroku sass

我遇到了将我的Ruby项目部署到Heroku的问题。我一直在搜索,但还没有找到解决方案。我的错误是:

remote:        Sass::SyntaxError: Invalid CSS after "...able_background": expected ")", was ": #808080,"
remote:        (in /tmp/build_4a9e512f14d76b318d2a93f5bcb4db07/app/assets/stylesheets/sass/admintable.scss:2)
remote:        /tmp/build_4a9e512f14d76b318d2a93f5bcb4db07/app/assets/stylesheets/sass/admintable.scss:2

我所指的scss代码是第二行:

$admin_table_colors:(
    admin_table_background: #808080,
    admin_table_header_background: #FF6347,
    admin_table_header_font: orange,
    admin_table_data_background: #808080
);

我的宝石文件:

source 'https://rubygems.org'

gem 'rails', '4.2'
gem 'bcrypt', '3.1.11'
gem 'sass-rails', '4.0.2'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'devise'
gem 'jquery-rails'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0',          group: :doc
gem 'omniauth'
gem 'omniauth-facebook'
gem 'turbolinks'
gem "pundit"
gem "tzinfo-data"
gem 'lodash-rails'
group :production do
  gem 'pg'
end

group :test, :development do
  gem "rspec-rails"
  gem "capybara"
  gem "launchy"
  gem "rack_session_access"
  gem "selenium-webdriver"
  gem "better_errors"
  gem "factory_girl_rails"
  gem "simplecov"
  gem "database_cleaner"
  gem "pry"
  gem "sqlite3"
  gem "guard-rspec", require: false
  gem "thin"
  gem "dotenv-rails"
end

gem "bootstrap-sass", "~> 3.1.1"
gem "faker"
gem "friendly_id"

在我的环境生产文件中,我有这个集合:

config.assets.compile = true

我没有.css文件.scss。我应该将它们转换为css并删除我的scss文件进行部署吗?也许我的宝石版本不合适?任何能够解决这个错误的见解都会很棒。

3 个答案:

答案 0 :(得分:0)

您的错误消息告诉所有内容。您在app/assets/stylesheets/sass/admintable.scss的第2行上有CSS语法错误。

确保CSS有效。您可以在本地测试以验证您已使用rails assets:precompile修复了问题。

答案 1 :(得分:0)

尝试以下代码:

配置/环境/ production.rb

config.assets.compile = true

然后运行命令:

RAILS_ENV=production rake assets:clean

RAILS_ENV=production rake assets:precompile

然后将所有编译文件和清单文件推送到heroku。

答案 2 :(得分:0)

我找到了解决问题的方法。虽然我相信我的scss代码是正确的,但预编译部分存在问题。我必须在我的所有scss文件中更改我的地图代码,其中一个示例是此代码:

$admin_table_colors:(
    admin_table_background: #808080,
    admin_table_header_background: #FF6347,
    admin_table_header_font: orange,
    admin_table_data_background: #808080
);

我不得不将其更改为:

$admin_table_colors:(
    'admin_table_background' #808080,
    'admin_table_header_background' #FF6347,
    'admin_table_header_font' orange,
    'admin_table_data_background' #808080
);

然后我不得不改变我的地图获取。我之前得到过这些地图:

map-get($map: $admin_table_colors, $key: admin_table_background);

然后将其更改为:

map-get($admin_table_colors, 'admin_table_background');

我让它部署,但是我的网站没有加载,我不知道这是否与该更改有关,或者它是其他的。