加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 预编译Rails 5以包含所有资产

发布时间:2020-12-17 04:33:36 所属栏目:百科 来源:网络整理
导读:我正在尝试预编译我的所有资产以进行生产.当我运行RAILS_ENV =生产包exec rake资产时:预编译并非所有资产都是预编译的.我试图使用别人在其他类似问题中建议的方法,但它们对我没用.对于初学者来说,这是我的assets.rb看起来像: Rails.application.config.ass
我正在尝试预编译我的所有资产以进行生产.当我运行RAILS_ENV =生产包exec rake资产时:预编译并非所有资产都是预编译的.我试图使用别人在其他类似问题中建议的方法,但它们对我没用.对于初学者来说,这是我的assets.rb看起来像:
Rails.application.config.assets.version = '1.0'


Rails.application.config.assets.paths << Rails.root.join('node_modules')



Rails.application.config.assets.precompile += %w(creative/manifest.js creative/manifest.css images/* bootstrap/* fonts/* magnific-popup/* morphext/* owlcarousel2/* rs-plugin-5/* stylesheets/* javascripts/*)

正如您可以看到我预编译的位置,我已尝试添加示例目录/ *以包含所有内容.以下是我试图包含的文件及其中的所有内容(这些文件位于Assets目录中):

bootstrap  
fonts   
javascripts     
morphext      
rs-plugin-5
config     
images  
magnific-popup  
owlcarousel2  
stylesheets

这是在我的公共目录中预编译当我运行预编译时看一下公共图像,你可以看到许多目录不在那里我甚至打开了每个文件夹,看看它们是否在另一个文件夹中并没有什么是存在的:

最后一部分是当我运行rails s -e production并导航到Localhost:3000时,我一直收到500错误,没有显示任何内容.在chrome和终端的控制台中没有错误,所以我无法看到我的页面在本地生产的样子.任何帮助将不胜感激.

更新

这是我的production.log看起来它没有得到必要的资产:

I,[2017-09-12T18:43:54.606853 #7393]  INFO -- : [b2f4fb53-c1ea-4d59-8045-44167c60416c] Started GET "/" for 127.0.0.1 at 2017-09-12 18:43:54 -0700
I,[2017-09-12T18:43:54.625461 #7393]  INFO -- : [b2f4fb53-c1ea-4d59-8045-44167c60416c] Processing by CreativesController#index as HTML
I,[2017-09-12T18:43:54.642161 #7393]  INFO -- : [b2f4fb53-c1ea-4d59-8045-44167c60416c]   Rendering creatives/index.html.erb within layouts/application
I,[2017-09-12T18:43:54.644418 #7393]  INFO -- : [b2f4fb53-c1ea-4d59-8045-44167c60416c]   Rendered creatives/index.html.erb within layouts/application (2.1ms)
I,[2017-09-12T18:43:54.644629 #7393]  INFO -- : [b2f4fb53-c1ea-4d59-8045-44167c60416c] Completed 500 Internal Server Error in 19ms
F,[2017-09-12T18:43:54.645433 #7393] FATAL -- : [b2f4fb53-c1ea-4d59-8045-44167c60416c]   
F,[2017-09-12T18:43:54.645478 #7393] FATAL -- : [b2f4fb53-c1ea-4d59-8045-44167c60416c] ActionView::Template::Error (The asset "AdobeStock_95578405.jpeg" is not present in the asset pipeline.):
F,[2017-09-12T18:43:54.645761 #7393] FATAL -- : [b2f4fb53-c1ea-4d59-8045-44167c60416c]     17:                 <li data-transition="slidehorizontal" data-slotamount="default" data-masterspeed="default" data-title="Next Generation Care">
[b2f4fb53-c1ea-4d59-8045-44167c60416c]     18:                 
[b2f4fb53-c1ea-4d59-8045-44167c60416c]     19:                 <!-- main image -->
[b2f4fb53-c1ea-4d59-8045-44167c60416c]     20:                 <%= image_tag "AdobeStock_95578405.jpeg",alt: "slidebg1",:data => {bgposition: "center bottom",bgrepeat: "no-repeat",bgfit: "cover"},:class => "rev-slidebg" %>
[b2f4fb53-c1ea-4d59-8045-44167c60416c]     21: 
[b2f4fb53-c1ea-4d59-8045-44167c60416c]     22:                 <!-- Transparent Background -->
[b2f4fb53-c1ea-4d59-8045-44167c60416c]     23:                 <div class="tp-caption dark-translucent-bg"
F,[2017-09-12T18:43:54.645799 #7393] FATAL -- : [b2f4fb53-c1ea-4d59-8045-44167c60416c]   
F,[2017-09-12T18:43:54.645828 #7393] FATAL -- : [b2f4fb53-c1ea-4d59-8045-44167c60416c] app/views/creatives/index.html.erb:20:in `_app_views_creatives_index_html_erb___200307797594027740_70304554688000'
I,[2017-09-12T18:43:54.734601 #7393]  INFO -- : [8f353cbb-4884-4c2c-896d-ba60b58caa61] Started GET "/favicon.ico" for 127.0.0.1 at 2017-09-12 18:43:54 -0700
F,[2017-09-12T18:43:54.735010 #7393] FATAL -- : [8f353cbb-4884-4c2c-896d-ba60b58caa61]   
F,[2017-09-12T18:43:54.735048 #7393] FATAL -- : [8f353cbb-4884-4c2c-896d-ba60b58caa61] ActionController::RoutingError (No route matches [GET] "/favicon.ico"):
F,[2017-09-12T18:43:54.735071 #7393] FATAL -- : [8f353cbb-4884-4c2c-896d-ba60b58caa61]   
F,[2017-09-12T18:43:54.735100 #7393] FATAL -- : [8f353cbb-4884-4c2c-896d-ba60b58caa61] actionpack (5.1.3) lib/action_dispatch/middleware/debug_exceptions.rb:63:in `call'
[8f353cbb-4884-4c2c-896d-ba60b58caa61] actionpack (5.1.3) lib/action_dispatch/middleware/show_exceptions.rb:31:in `call'
[8f353cbb-4884-4c2c-896d-ba60b58caa61] railties (5.1.3) lib/rails/rack/logger.rb:36:in `call_app'
[8f353cbb-4884-4c2c-896d-ba60b58caa61] railties (5.1.3) lib/rails/rack/logger.rb:24:in `block in call'
[8f353cbb-4884-4c2c-896d-ba60b58caa61] activesupport (5.1.3) lib/active_support/tagged_logging.rb:69:in `block in tagged'
[8f353cbb-4884-4c2c-896d-ba60b58caa61] activesupport (5.1.3) lib/active_support/tagged_logging.rb:26:in `tagged'
[8f353cbb-4884-4c2c-896d-ba60b58caa61] activesupport (5.1.3) lib/active_support/tagged_logging.rb:69:in `tagged'
[8f353cbb-4884-4c2c-896d-ba60b58caa61] railties (5.1.3) lib/rails/rack/logger.rb:24:in `call'
[8f353cbb-4884-4c2c-896d-ba60b58caa61] actionpack (5.1.3) lib/action_dispatch/middleware/remote_ip.rb:79:in `call'
[8f353cbb-4884-4c2c-896d-ba60b58caa61] actionpack (5.1.3) lib/action_dispatch/middleware/request_id.rb:25:in `call'
[8f353cbb-4884-4c2c-896d-ba60b58caa61] rack (2.0.3) lib/rack/method_override.rb:22:in `call'
[8f353cbb-4884-4c2c-896d-ba60b58caa61] rack (2.0.3) lib/rack/runtime.rb:22:in `call'
[8f353cbb-4884-4c2c-896d-ba60b58caa61] activesupport (5.1.3) lib/active_support/cache/strategy/local_cache_middleware.rb:27:in `call'
[8f353cbb-4884-4c2c-896d-ba60b58caa61] actionpack (5.1.3) lib/action_dispatch/middleware/executor.rb:12:in `call'
[8f353cbb-4884-4c2c-896d-ba60b58caa61] rack (2.0.3) lib/rack/sendfile.rb:111:in `call'
[8f353cbb-4884-4c2c-896d-ba60b58caa61] railties (5.1.3) lib/rails/engine.rb:522:in `call'
[8f353cbb-4884-4c2c-896d-ba60b58caa61] puma (3.10.0) lib/puma/configuration.rb:225:in `call'
[8f353cbb-4884-4c2c-896d-ba60b58caa61] puma (3.10.0) lib/puma/server.rb:605:in `handle_request'
[8f353cbb-4884-4c2c-896d-ba60b58caa61] puma (3.10.0) lib/puma/server.rb:437:in `process_client'
[8f353cbb-4884-4c2c-896d-ba60b58caa61] puma (3.10.0) lib/puma/server.rb:301:in `block in run'
[8f353cbb-4884-4c2c-896d-ba60b58caa61] puma (3.10.0) lib/puma/thread_pool.rb:120:in `block in spawn_thread'
I,[2017-09-12T18:43:58.249911 #7393]  INFO -- : [2e6342ac-ec61-410c-98ba-ae205fb9cc26] Started GET "/" for 127.0.0.1 at 2017-09-12 18:43:58 -0700
I,[2017-09-12T18:43:58.251066 #7393]  INFO -- : [2e6342ac-ec61-410c-98ba-ae205fb9cc26] Processing by CreativesController#index as HTML
I,[2017-09-12T18:43:58.252212 #7393]  INFO -- : [2e6342ac-ec61-410c-98ba-ae205fb9cc26]   Rendering creatives/index.html.erb within layouts/application
I,[2017-09-12T18:43:58.253079 #7393]  INFO -- : [2e6342ac-ec61-410c-98ba-ae205fb9cc26]   Rendered creatives/index.html.erb within layouts/application (0.7ms)
I,[2017-09-12T18:43:58.253250 #7393]  INFO -- : [2e6342ac-ec61-410c-98ba-ae205fb9cc26] Completed 500 Internal Server Error in 2ms
F,[2017-09-12T18:43:58.254061 #7393] FATAL -- : [2e6342ac-ec61-410c-98ba-ae205fb9cc26]   
F,[2017-09-12T18:43:58.254123 #7393] FATAL -- : [2e6342ac-ec61-410c-98ba-ae205fb9cc26] ActionView::Template::Error (The asset "AdobeStock_95578405.jpeg" is not present in the asset pipeline.):
F,[2017-09-12T18:43:58.254377 #7393] FATAL -- : [2e6342ac-ec61-410c-98ba-ae205fb9cc26]     17:                 <li data-transition="slidehorizontal" data-slotamount="default" data-masterspeed="default" data-title="Next Generation Care">
[2e6342ac-ec61-410c-98ba-ae205fb9cc26]     18:                 
[2e6342ac-ec61-410c-98ba-ae205fb9cc26]     19:                 <!-- main image -->
[2e6342ac-ec61-410c-98ba-ae205fb9cc26]     20:                 <%= image_tag "AdobeStock_95578405.jpeg",:class => "rev-slidebg" %>
[2e6342ac-ec61-410c-98ba-ae205fb9cc26]     21: 
[2e6342ac-ec61-410c-98ba-ae205fb9cc26]     22:                 <!-- Transparent Background -->
[2e6342ac-ec61-410c-98ba-ae205fb9cc26]     23:                 <div class="tp-caption dark-translucent-bg"
F,[2017-09-12T18:43:58.254415 #7393] FATAL -- : [2e6342ac-ec61-410c-98ba-ae205fb9cc26]   
F,[2017-09-12T18:43:58.254442 #7393] FATAL -- : [2e6342ac-ec61-410c-98ba-ae205fb9cc26] app/views/creatives/index.html.erb:20:in `_app_views_creatives_index_html_erb___200307797594027740_70304554688000'

更新2

这是我的资产文件夹结构的图像:

我还注意到有另一个资产文件夹,因为它预编译了rs-plugin的结构而不是其他文件夹看到图像:

这是我的application.rb:

require_relative 'boot'

require 'rails/all'

# Require the gems listed in Gemfile,including any gems
# you've limited to :test,:development,or :production.
Bundler.require(*Rails.groups)

module Cnd
  class Application < Rails::Application
    # Initialize configuration defaults for originally generated Rails version.
    config.load_defaults 5.1
    config.assets.paths << Rails.root.join("app","assets","fonts")
    config.assets.paths << Rails.root.join("app","images")
    config.assets.paths << Rails.root.join("app","bootstrap")
    config.assets.paths << Rails.root.join("app","rs-plugin-5")
    config.assets.paths << Rails.root.join("app","magnific-popup")
    config.assets.paths << Rails.root.join("app","owlcarousel2")
    config.assets.paths << Rails.root.join("app","morphext")

    # 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.
  end
end

解决方法

Rails.application.config.assets.precompile += %w(creative/manifest.js creative/manifest.css images/* bootstrap/* fonts/* magnific-popup/* morphext/* owlcarousel2/* rs-plugin-5/* stylesheets/* javascripts/*)

但正如我从你的截图中看到的那样,你的公共/资产目录中有一个名为assets的文件夹.

您的指纹文件预编译文件位于公共/资产/资产内,而不是公共/资产

这意味着如果这些文件正在推向生产(检查它们是否在您的git存储库中,如果没有执行git add),您将无法在路径localhost:3000 / assets /<中看到它们. nameofyourfile>因为您的目录结构已更改,可能您可以在localhost:3000 / assets / assets /< nameofyourfile>中显示它们,但如果我是您,我会保留正常的目录结构.

预编译资产意味着创建它的指纹版本

通过说我想预编译我的所有资产,你说你想要在资产管道中添加或编辑的所有文件生成一个预编译的指纹版本,以便在生产中使用.

预编译如何工作?
你可以阅读chapter 4.1 of the Asset Pipeline Documentation,基本上sprockets使用一个名为.sprockets-manifest-fingerprint.json的文件来检查哪个是生产中使用的指纹文件的最新版本.这就是有时删除public / assets文件夹解决问题的原因,因为您删除了所有旧文件,包括可能无法使用最新指纹更新的sprockets-manifest.json.

如果在您的app / assets文件夹中找不到它们,那么开发将回退到app / assets文件夹中的文件,这就是为什么您只在生产中收到错误的原因.
您可以阅读了解如何禁用此行为

chapter 3.1 and 3.2

这些步骤也是如此,因为错误通常在开发中更容易解决,因为您不必推送git来查看结果.有时文件包含在.gitignore中,或者您需要使用git add app / assets /< nameofthefolder> /< nameofthefile>手动添加该文件.

我们确实在屏幕截图中看到了您的公共文件夹,但是我们没有看到您的app / assets文件夹结构和任何sprockets设置,所以可能不是为了获得解决方案而在问题上添加赏金,而只是给我们找到解决方案所需的信息.

现在这是一个基于意见的通用问题

另外我相信你做了config.assets.prefix = "/some_other_path"改变了/ assets路径

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读