我尝试使用以下turorial将我的Rails应用部署到heroku:
https://devcenter.heroku.com/articles/getting-started-with-rails4
我使用Rails 4。1.1和ruby 2。1.1
我的Gemfile里面有gem 'rails_12factor', group: :production
。
我的申请表。rb:
require File.expand_path('../boot', __FILE__)
require 'rails/all'
Bundler.require(*Rails.groups)
module Charticus
class Application Rails::Application
# Settings in config/environments/* take precedence over those specified here.
# Application configuration should go into files in config/initializers
# -- all .rb files in that directory are automatically loaded.
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
# config.time_zone = 'Central Time (US & Canada)'
# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
# config.i18n.default_locale = :de
end
end
我创建了文件public/assets/manifest.yml
但是当我将app部署到heroku时,它会编译我所有的js-files文件到application中。js和所有css-files应用程序。css.我在www. example上看不到 www.example.com using firebug.
我需要对我的配置做些什么才能在www. example上看到我所有的js和css文件 www.example.com 禁用heroku上的资产预编译和缩小?
请帮帮我!谢谢
6条答案
按热度按时间vxqlmq5t1#
lib/tasks/assets。耙
你完了
piwo6bdm2#
config/environments/development.rb
和config/environments/production.rb
比较。并进行生产。像开发中那样配置rb资产。rb:
注解此行:
config.serve_static_assets = false
config.assets.js_compressor = :uglifier
config.assets.compile = false
config.assets.digest = true
然后:
1.将我的更改推送到git repo
git push origin master
1.将更改推送到heroku
git push heroku master
bprjcwpo3#
Rails 4应用程序有
manifest-*.json
文件,而不是manifest.yml
文件。这个文件通常是在运行rake assets:precompile
时生成的,您是如何编译资产的?无论如何,您需要一个文件
public/assets/manifest-(fingerprint).json
文件qzlgjiam4#
快进到2018年,您需要将以下内容添加到
config/initializers/production.rb
中:然后,您需要自定义Heroku's Ruby Buildpack以不运行
assets:precompile
rake任务。我不会提供这样一个buildpack的链接,因为我不支持或保证这样一个buildpack,但是在lib/language_pack/ruby.rb
中很容易找到它并开始删除相关代码。然后,你必须配置你的Heroku应用程序使用你的新的分支构建包,而不是默认的(e.例如使用
heroku buildpacks
)。这是禁用Heroku应用程序w/ Rails中资产管道的最干净的方法,而不需要重写Rails的内置rake任务。
wlwcrazw5#
快进到2021年和Rails 6。x,如果您完全删除了Webpacker和Sprockets/Asset Pipeline,请将
bin/yarn
文件内容替换为以下内容:@danielricecodes的建议可能仍然有效,但更具侵略性。
zc0qhyus6#
如果你根本不使用Rails资产管道线(
sprockets
,sprockets-rails
),你可以删除这些gem。这将删除assets:precompile
Rake任务,Heroku将跳过它,因为它找不到它(源代码-自Rails 4起)端到端方法将是:
1.禁用资源管道:
1.删除
sprockets
和sprockets-rails
以删除assets:precompile
的定义。坏消息是,没有办法轻松地删除这些gem,因为它们预先打包了rails
。默认情况下,rails
需要几个gem,包括rake任务。但是,您可以选择单独列出rails依赖项的名称,并且可以从列表中排除sprockets
:注:自
7.0.0-alpha3
起,自动排除sprockets
。参见DHH的the commit that removedsprockets