Ruby on rails Can';t使用Rails 4和引导sass gem在Heroku上运行CSS
我在Heroku上部署了一个应用程序,但有一个问题我似乎无法解决。通过Ruby on rails Can';t使用Rails 4和引导sass gem在Heroku上运行CSS,ruby-on-rails,heroku,ruby-on-rails-4,bootstrap-sass,Ruby On Rails,Heroku,Ruby On Rails 4,Bootstrap Sass,我在Heroku上部署了一个应用程序,但有一个问题我似乎无法解决。通过Bootstrap sass的应用程序的CSS没有加载,因此我有一个非样式的应用程序。目前,这只是一个静态页面的集合 除了自述文件中的一个步骤外,我已经完成了所有的步骤。我无法理解并且很可能成为我的问题的步骤如下。由于Rails中的一项更改阻止在供应商和lib中编译图像,因此您需要在application.rb中添加以下行: config.assets.precompile += %w(*.png *.jpg *.jpeg *
Bootstrap sass
的应用程序的CSS没有加载,因此我有一个非样式的应用程序。目前,这只是一个静态页面的集合
除了自述文件中的一个步骤外,我已经完成了所有的步骤。我无法理解并且很可能成为我的问题的步骤如下。由于Rails中的一项更改阻止在供应商和lib中编译图像,因此您需要在application.rb中添加以下行:
config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif)
由于我对编程还是很陌生,第一个问题是我不知道在application.rb文件中的什么位置以及如何添加它。如果有人能帮我演示如何以及在何处正确添加上述代码,我将不胜感激
RAILS_ENV=production bundle exec rake assets:precompile
第二个问题可能与我正在使用的gem有关,但是当我创建应用程序时,sass-rails gem安装了~>4.0.0.beta1。根据自述文件,要使用的版本是3.2。由于这也可能是一个问题,我已经包括了gem文件,以防任何人确定这是我的问题的根本原因
提前感谢您提供的任何帮助
编辑:添加我在第一次尝试中采取的步骤,这些步骤导致样式在本地主机上正常工作,但在代码部署到heroku之后就无法正常工作
RAILS_ENV=production bundle exec rake assets:precompile
我最终还是得到了一个在本地主机上有适当风格的网站,但在Heroku上没有任何风格。正如我在上面的原始帖子中所提到的,有一行代码需要添加到application.rb文件中,但我没有遵循该行代码,因为我不了解如何正确地将该行代码添加到该文件中
档案:
source 'https://rubygems.org'
ruby "2.0.0"
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.0.0.beta1'
group :production do
gem 'pg'
end
group :development, :test do
gem 'sqlite3'
end
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', '~> 4.0.0.beta1'
gem 'coffee-rails', '~> 4.0.0.beta1'
gem 'bootstrap-sass', '~> 2.3.1.1'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby
gem 'uglifier', '>= 1.0.3'
end
gem 'jquery-rails'
# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
gem 'turbolinks'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 1.0.1'
# To use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.0.0'
# Use unicorn as the app server
# gem 'unicorn'
# Deploy with Capistrano
# gem 'capistrano', group: :development
# To use debugger
# gem 'debugger'
通过将这两个gem添加到我的应用程序中,我能够解决这个问题
group :production do
gem 'rails_log_stdout', github: 'heroku/rails_log_stdout'
gem 'rails3_serve_static_assets', github: 'heroku/rails3_serve_static_assets'
end
添加该选项,运行bundle安装
,然后推送到heroku
你的风格应该开始加载了。我刚刚(2013年6月13日)从Heroku devs那里得到了这个答案,他的支持引导我跨越了障碍。
这就是我在Heroku应用程序中从localhost获得css显示的方式
“您所需要做的就是在生产中打开资产服务,并将记录器设置为stdout,以使Rails4在Heroku上工作。我们目前正在努力平滑Rails 4应用程序的部署过程,但与此同时,您只需更改代码中的这些行,就不需要这些gems。”(感谢Bret和Neil的好消息)
在/config/environments/production中。设置:
config.cache_classes = true
config.serve_static_files = true
config.assets.compile = true
config.assets.digest = true
我不知道记录器中的标准输出,所以无法检查
做一个git添加。和git提交
确保/config/database.yml具有:
production:
adapter: postgresql
encoding: unicode
database: Your_appname_production
下面的env命令需要此信息
确保gem文件中有正在生产的gem“pg”
执行另一个git提交
在应用程序的终端中的一行上运行此命令:
env RAILS_ENV=production DATABASE_URL=postgresql://user:pass@127.0.0.1/Your_app_name_production bundle exec rake assets:precompile 2>&1
其中DATABASE_URL=postgresql与yml文件中的生产适配器相同
并且指定了您的应用程序名称,因为Heroku似乎只运行生产
有人建议我不要这样做,我不需要:
group :production do
gem 'rails_log_stdout', github: 'heroku/rails_log_stdout'
gem 'rails3_serve_static_assets', github: 'heroku/rails3_serve_static_assets'
end
它在bundle安装和Heroku中出错
不知道这是否有帮助,但我也增加了生产
Bundler.require(*Rails.groups(assets: %w(development test production)))
我记不起我在哪里看到那个建议了
嗯
阿雷尔
在config/envirnoments/production.rb中设置这些属性修复了我在apache server中遇到的类似问题只需在推送到heroku之前运行bundle exec rake assets:precompile,我不会设置
config.assets.compile=true
,这会影响性能(但确实有效)
如下文所述:
首先,从Rails beta版升级到 检查您可能在何处设置
config.assets.initialize\u on\u precompile=false
,因为这可能会使其返回到非链轮资产解析(我猜您可能在阅读heroku文档上的Rails 3.x时将其设置为false)
将其设置回默认值true
ruby
config.assets.initialize\u on\u precompile=true
然后在heroku上为应用程序启用:
# Enable precompile support for the app
heroku labs:enable user-env-compile
# Remove precompiled assets
rm -rf public/assets/
git add -u
git commit -m 'Remove precompiled assets'
# Now push and everything should just work from now on
git push heroku master
改编自文件
/config/environments/production.rb
中的.Setconfig.assets.compile=true
:
config.assets.compile=true
关于资产管道的更多信息。造成这个问题的一个简单原因可能是混合了css文件类型。根据我自己的经验,如果您推出一个同时包含.css和.scss文件类型的资产文件夹,就会发生这种情况。也许其他人可以解释为什么会发生这种情况……但是,我所做的只是将.css文件重命名为.scss。然后,一切都正确地编译了,世界上一切都是正确的。在推送到Heroku之前,您是否预编译了css?您到底做了什么还不清楚(除了“按照这些说明进行操作”),你能准确地写下你做了什么吗?@我在回答第一个问题的步骤中加了一句话,把
config.assets.precompile
一行接一行地写下另一行config.assets
行(最好匹配缩进)。重要的是它在结尾之前。恐怕我没有
config.assets.compile=true