คำถามติดแท็ก asset-pipeline

ไปป์ไลน์เนื้อหามีกรอบในการเชื่อมต่อและลดขนาดหรือบีบอัดเนื้อหา JavaScript และ CSS นอกจากนี้ยังเพิ่มความสามารถในการเขียนเนื้อหาเหล่านี้ในภาษาอื่น ๆ และตัวประมวลผลล่วงหน้าเช่น CoffeeScript, Sass และ ERB

19
Rails 4: วิธีใช้ $ (เอกสาร) .ready () พร้อมลิงค์เทอร์โบ
ฉันพบปัญหาในแอป Rails 4 ของฉันในขณะที่พยายามจัดระเบียบไฟล์ JS "ทางรถไฟ" ก่อนหน้านี้พวกเขากระจัดกระจายในมุมมองที่แตกต่างกัน ฉันจัดระเบียบพวกเขาเป็นไฟล์แยกต่างหากและรวบรวมพวกเขาด้วยท่อสินทรัพย์ อย่างไรก็ตามฉันเพิ่งรู้ว่าเหตุการณ์ "พร้อม" ของ jQuery ไม่ได้เกิดจากการคลิกครั้งต่อไปเมื่อเปิดการเชื่อมโยงแบบเทอร์โบ ครั้งแรกที่คุณโหลดหน้าเว็บ แต่เมื่อคุณคลิกลิงก์สิ่งใดก็ตามที่อยู่ภายในready( function($) {จะไม่ถูกดำเนินการ (เนื่องจากหน้าเว็บไม่ได้โหลดอีกครั้ง) คำอธิบายที่ดี: ที่นี่ ดังนั้นคำถามของฉันคืออะไรวิธีที่เหมาะสมเพื่อให้แน่ใจว่าเหตุการณ์ jQuery ทำงานอย่างถูกต้องในขณะที่ลิงค์เทอร์โบเปิดอยู่ คุณใส่สคริปต์ในตัวฟังเฉพาะของ Rails หรือไม่? หรือราวอาจมีเวทมนตร์ที่ทำให้มันไม่จำเป็น? เอกสารนั้นค่อนข้างคลุมเครือเกี่ยวกับวิธีการใช้งานโดยเฉพาะอย่างยิ่งการโหลดไฟล์หลายไฟล์ผ่านไฟล์ Manifest เช่น application.js

29
การใช้ Rails 3.1 คุณใส่โค้ด JavaScript ของ“ หน้าเฉพาะ” ไว้ที่ไหน?
เพื่อความเข้าใจของฉัน JavaScript ทั้งหมดของคุณจะถูกรวมเป็น 1 ไฟล์ Rails ทำสิ่งนี้ตามค่าเริ่มต้นเมื่อเพิ่ม//= require_tree .ลงในapplication.jsไฟล์ Manifest ของคุณ สิ่งนี้ฟังดูเหมือนช่วยชีวิตจริง แต่ฉันกังวลเล็กน้อยเกี่ยวกับรหัส JavaScript เฉพาะหน้า รหัสนี้จะถูกดำเนินการในทุกหน้า? สิ่งสุดท้ายที่ฉันต้องการคือการทำให้วัตถุทั้งหมดของฉันเป็นอินสแตนซ์สำหรับทุกหน้าเมื่อจำเป็นเท่านั้นใน 1 หน้า นอกจากนี้ยังไม่มีโอกาสที่จะเกิดรหัสที่ขัดแย้งกันได้หรือไม่ หรือคุณใส่scriptแท็กขนาดเล็กที่ด้านล่างของหน้าเว็บที่เพิ่งเรียกใช้เป็นวิธีการที่เรียกใช้โค้ดจาวาสคริปต์สำหรับหน้า? คุณไม่ต้องการ require.js อีกต่อไปแล้วใช่ไหม ขอบคุณ แก้ไข : ฉันขอบคุณคำตอบทั้งหมด ... และฉันไม่คิดว่าพวกเขาจะได้รับปัญหาจริงๆ บางคนเกี่ยวกับการออกแบบและดูเหมือนจะไม่เกี่ยวข้อง ... และคนอื่น ๆ พูดถึงjavascript_include_tag... ที่ฉันรู้ว่ามีอยู่ (ชัด ๆ ... ) แต่มันจะปรากฏว่าทางรถไฟ 3.1 จะก้าวไปข้างหน้าเพื่อห่อหุ้มทั้งหมด JavaScript ของคุณเป็น 1 ไฟล์แทนที่จะโหลด JavaScript ที่ด้านล่างของแต่ละหน้า ทางออกที่ดีที่สุดที่ฉันสามารถทำได้คือห่อคุณสมบัติบางอย่างในdivแท็กด้วยids …

14
ฉันจะปิดการใช้งานการบันทึกข้อความไปป์ไลน์ (sprockets) ใน Ruby on Rails 3.1 ได้อย่างไร
เฟืองจะค่อนข้างละเอียดในบันทึก (dev) โดยค่าเริ่มต้นภายใต้ Ruby on Rails 3.1 (RC1): Started GET "/assets/application.css" for 127.0.0.1 at 2011-06-10 17:30:45 -0400 Compiled app/assets/stylesheets/application.css.scss (5ms) (pid 6303) Started GET "/assets/application.js" for 127.0.0.1 at 2011-06-10 17:30:45 -0400 Compiled app/assets/stylesheets/default.css.scss (15ms) (pid 6303) ... Started GET "/assets/default/header_bg.gif" for 127.0.0.1 at 2011-06-10 17:30:45 -0400 Served asset /default/header_logo.gif - …

12
ใช้ฟอนต์กับไพพ์ไลน์ของ Rails
ฉันได้รับการกำหนดค่าแบบอักษรบางอย่างในไฟล์ Scss ของฉันดังนี้: @font-face { font-family: 'Icomoon'; src: asset-url('icoMoon.eot?#iefix', font) format('embedded-opentype'), asset-url('icoMoon.woff', font) format('woff'), asset-url('icoMoon.ttf', font) format('truetype'), asset-url('icoMoon.svg#Icomoon', font) format('svg'); } ไฟล์ตัวอักษรที่แท้จริงจะถูกเก็บไว้ใน / app / สินทรัพย์ / แบบอักษร / ฉันเพิ่มลงconfig.assets.paths << Rails.root.join("app", "assets", "fonts")ในไฟล์ application.rb แล้ว และคอมไพล์ซอร์ส CSS มีดังต่อไปนี้: @font-face { font-family: 'Icomoon'; src: url(/assets/icoMoon.eot?#iefix) format("embedded-opentype"), url(/assets/icoMoon.woff) format("woff"), url(/assets/icoMoon.ttf) format("truetype"), …

14
ราง 3.1.0 ActionView :: Template :: ข้อผิดพลาด (application.css ไม่ได้ถูกคอมไพล์ล่วงหน้า)
ฉันได้สร้างแอพพลิเคชั่นพื้นฐานพร้อมตัวควบคุมหน้าอย่างง่ายพร้อมฟังก์ชั่นดัชนีและเมื่อฉันโหลดหน้าฉันได้รับ: ActionView::Template::Error (application.css isn't precompiled): 2: <html> 3: <head> 4: <title>Demo</title> 5: <%= stylesheet_link_tag "application" %> 6: <%= javascript_include_tag "application" %> 7: <%= csrf_meta_tags %> 8: </head> app/views/layouts/application.html.erb:5:in `_app_views_layouts_application_html_erb__43625033_88530400' Gemfile source 'http://rubygems.org' gem 'rails', '3.1.0' # Bundle edge Rails instead: # gem 'rails', :git => 'git://github.com/rails/rails.git' gem 'sqlite3' gem 'execjs' …

7
config.assets.compile = true ในการผลิต Rails ทำไมต้องเป็นเช่นนั้น?
เริ่มต้น Rails ติดตั้งแอปโดยrails newมีconfig.assets.compile = falseในการผลิต และวิธีการทั่วไปในการทำสิ่งต่าง ๆ คือการเรียกใช้rake assets:precompileก่อนที่จะปรับใช้แอปของคุณเพื่อให้แน่ใจว่ามีการรวบรวมสินทรัพย์ไปป์ไลน์ของสินทรัพย์ทั้งหมด แล้วจะเกิดอะไรขึ้นถ้าฉันเริ่มconfig.assets.compile = trueผลิต ฉันจะไม่ต้องวิ่งprecompileอีกต่อไป สิ่งที่ฉันเชื่อว่าจะเกิดขึ้นเป็นครั้งแรกที่มีการร้องขอเนื้อหาจะถูกรวบรวม นี่จะเป็นผลงานที่ยอดเยี่ยมในครั้งแรก (และหมายความว่าโดยทั่วไปคุณต้องใช้ js runtime ในการผลิตเพื่อดำเนินการ) แต่นอกเหนือจากข้อเสียเหล่านี้หลังจากที่รวบรวมเนื้อหาอย่างเกียจคร้านฉันคิดว่าการเข้าถึงเนื้อหานั้นในภายหลังจะไม่มีผลกระทบต่อประสิทธิภาพการทำงานของแอปจะเหมือนกับประสิทธิภาพของสินทรัพย์ก่อนคอมไพล์หลังจากการคอมไพล์ครั้งแรกในครั้งแรก จริงหรือ มีอะไรฉันหายไปไหม มีเหตุผลอื่นใดที่จะไม่ตั้งconfig.assets.compile = trueในการผลิต? ถ้าฉันใช้งานจริงในการผลิต JS และยินดีที่จะแลกเปลี่ยนประสิทธิภาพที่ลดลงสำหรับการเข้าถึงสินทรัพย์ครั้งแรกเพื่อเป็นการตอบแทนที่ไม่ต้องทำงานprecompileสิ่งนี้สมเหตุสมผลหรือไม่

3
การใช้ไปป์ไลน์ทรัพย์สิน Rails 3.1 เพื่อใช้ CSS บางอย่างตามเงื่อนไข
ฉันอยู่ระหว่างการสร้างแอพ Rails เดี่ยวครั้งแรกของฉันโดยใช้ Rails 3.1.rc5 ปัญหาของฉันคือฉันต้องการให้เว็บไซต์ของฉันแสดงไฟล์ CSS ต่างๆตามเงื่อนไข ฉันใช้ Blueprint CSS และฉันพยายามให้เฟือง / รางแสดงผลscreen.cssเกือบตลอดเวลาprint.cssเฉพาะเมื่อพิมพ์และie.cssเมื่อเข้าถึงไซต์จาก Internet Explorer เท่านั้น น่าเสียดายที่*= require_treeคำสั่งเริ่มต้นในapplication.cssรายการรวมทุกอย่างในassets/stylesheetsไดเรกทอรีและทำให้เกิดความสับสน CSS วิธีแก้ปัญหาปัจจุบันของฉันเป็นวิธีการบังคับแบบ brute-force ซึ่งฉันระบุทุกอย่างเป็นรายบุคคล: ใน application.css: *= require_self *= require home.css ... *= require blueprint/screen.css ในสไตล์ชีตของฉันบางส่วน (haml): <!--[if lt IE 9] <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> ![endif]--> = stylesheet_link_tag "application" = stylesheet_link_tag 'blueprint/print', media: …

25
ไม่สามารถถอดรหัสแบบอักษรที่ดาวน์โหลดข้อผิดพลาดในการแยกวิเคราะห์ OTS: แท็กเวอร์ชันไม่ถูกต้อง + ราง 4
ฉันกำลังทำการรวบรวมเนื้อหาล่วงหน้าและเรียกใช้แอปพลิเคชันในโหมดการผลิต หลังจากรวบรวมเมื่อฉันโหลดหน้าดัชนีของฉันฉันได้รับคำเตือนดังต่อไปนี้ในคอนโซล Chrome: Failed to decode downloaded font: http://localhost:3000/fonts/ionicons.ttf?v=2.0.0 prospects:1 OTS parsing error: invalid version tag Failed to decode downloaded font: http://localhost:3000/fonts/ionicons.woff?v=2.0.0 prospects:1 OTS parsing error: invalid version tag ปัญหาก็คือไม่ได้โหลดไอคอนแทนการที่แสดงสี่เหลี่ยม เราใช้แบบอักษรที่กำหนดเองและรหัสคือ: @font-face { font-family: 'icomoon'; src: font-url('icomoon.eot'); src: font-url('icomoon.eot?#iefix') format('embedded-opentype'), font-url('icomoon.ttf') format('truetype'), font-url('icomoon.woff') format('woff'), font-url('icomoon.svg#icomoon') format('svg'); font-weight: normal; font-style: normal; …

9
ไม่มีเส้นทางที่ตรงกับ [GET] / เนื้อหา
ฉันมีแอพ Rails ที่ฉันพยายามทดสอบในสภาพแวดล้อมการผลิต ฉันวิ่งRAILS_ENV=production rake assets:precompileซึ่งสร้างสินทรัพย์ทั้งหมดของฉันใน / สาธารณะ / สินทรัพย์ ปัญหาคือเมื่อฉันเริ่มแอพของฉันด้วย / RAILS_ENV=production rails s thinฉันได้รับ: ActionController::RoutingError (No route matches [GET] "/assets/application-eff78fd67423795a7be3aa21512f0bd2.css"): /public/assets/application-eff78fd67423795a7be3aa21512f0bd2.cssไฟล์นี้ไม่อยู่แม้ คิดว่าทำไมฉันถึงได้รับสิ่งนี้RoutingError?

18
Rails 4: สินทรัพย์ไม่โหลดในการผลิต
ฉันพยายามนำแอปไปใช้งานจริง แต่รูปภาพและเส้นทางเนื้อหา css ไม่ทำงาน นี่คือสิ่งที่ฉันกำลังทำอยู่: เนื้อหารูปภาพอยู่ใน /app/assets/images/image.jpg สไตล์ชีตอยู่ใน /app/assets/stylesheets/style.css ในเลย์เอาต์ของฉันฉันอ้างอิงไฟล์ css ดังนี้: <%= stylesheet_link_tag "styles", media: "all", "data-turbolinks-track" => true %> ก่อนที่จะรีสตาร์ทยูนิคอร์นฉันรันRAILS_ENV=production bundle exec rake assets:precompileและมันก็สำเร็จและฉันเห็นไฟล์ที่มีลายนิ้วมือในpublic/assetsไดเรกทอรี เมื่อฉันเรียกดูไซต์ของฉันฉันได้รับข้อผิดพลาด 404 ไม่พบสำหรับmysite.com/stylesheets/styles.css. ผมทำอะไรผิดหรือเปล่า? อัปเดต: ในเค้าโครงของฉันมีลักษณะดังนี้: <%= stylesheet_link_tag "bootstrap.min", media: "all", "data-turbolinks-track" => true %> <%= stylesheet_link_tag "styles", media: "all", "data-turbolinks-track" => true %> …

13
ExecJS :: RuntimeError บน Windows ที่พยายามทำตาม rubytutorial
UPDATE: คำแนะนำของColinในการลบบรรทัด // = require_tree ได้แก้ไขปัญหาแล้ว ฉันเสียเวลาไปกว่า 2 วันในการพยายามทำตามทุกข้อเสนอแนะและแก้ไขปัญหาของฉัน ฉันพยายามติดตามหนังสือhttp://ruby.railstutorial.orgบนเครื่อง windows และไม่สามารถผ่านข้อผิดพลาดที่น่ารังเกียจต่อไปนี้ไปได้ตลอดชีวิต ExecJS::RuntimeError in Static_pages#home Showing C:/Users/.../bootcamp-sample-app/app/views/layouts/application.html.erb where line #6 raised: ["ok","(function() {\n\n\n\n}).call(this);\n"] (in C:/Users/.../bootcamp-sample-app/app/assets/javascripts/sessions.js.coffee) Extracted source (around line #6): 3: <head> 4: <title><%= full_title(yield(:title)) %></title> 5: <%= stylesheet_link_tag "application", media: "all" %> 6: <%= javascript_include_tag "application" %> 7: <%= …

6
Rails 4 image-path, image-url และ asset-url ไม่ทำงานในไฟล์ SCSS อีกต่อไป
เราควรใช้อย่างอื่นนอกเหนือจากimage-urlและอื่น ๆ ใน Rails 4 หรือไม่? พวกเขาส่งคืนค่าที่แตกต่างกันซึ่งดูเหมือนจะไม่สมเหตุสมผล ถ้าผมมีlogo.pngใน/app/assets/images/logo.pngและฉันจะทำต่อไปนี้คือสิ่งที่ผมได้รับ: image-url("logo.png") -> url("/images/logo.png") #obviously doesn't work image-path("logo.png") -> "/images/logo.png" asset-url("logo.png") -> url("/logo.png") แน่นอนว่าไม่มีงานเหล่านี้เพราะพวกเขาต้องการอย่างน้อย/assetsต่อหน้า UPDATE : จริงๆแล้วฉันเพิ่งสังเกตว่าฉันจะเข้าถึงภาพใน Rails 4 ได้อย่างไร ฉันมีภาพที่/app/assets/images/logo.png. แต่ถ้าฉันไปที่ URL ใด ๆ ต่อไปนี้ฉันยังไม่เห็นภาพของฉัน: http://localhost:3000/assets/logo.png http://localhost:3000/assets/images/logo.png http://localhost:3000/logo.png http://localhost:3000/images/logo.png อัปเดต 2 : วิธีเดียวที่ฉันสามารถเรียกใช้งานได้logo.pngคือการย้ายไปยัง/app/assets/stylesheetsไดเร็กทอรีจากนั้นดึงขึ้น: http://localhost:3000/assets/logo.png

3
เหตุใด Rails4 จึงยกเลิกการรองรับกลุ่ม "ทรัพย์สิน" ใน Gemfile
ใน Rails 3 อัญมณีที่ใช้เฉพาะในการสร้างสินทรัพย์ในไปป์ไลน์สินทรัพย์ถูกวางไว้อย่างถูกต้องในassetsกลุ่มของ Gemfile: ... # Gems used only for assets and not required # in production environments by default. group :assets do gem 'sass-rails' gem 'coffee-rails' gem 'uglifier' # See https://github.com/sstephenson/execjs#readme for more supported runtimes # gem 'therubyracer', :platforms => :ruby end ตอนนี้ตามเอกสารการอัพเกรด (ยังอยู่ระหว่างดำเนินการ) : Rails 4.0 ลบกลุ่มสินทรัพย์ออกจาก …

5
โครงสร้างสินทรัพย์ SCSS ที่เหมาะสมใน Rails
ดังนั้นฉันมีapp/assets/stylesheets/โครงสร้างไดเร็กทอรีที่มีลักษณะดังนี้: |-dialogs |-mixins |---buttons |---gradients |---vendor_support |---widgets |-pages |-structure |-ui_elements ในแต่ละไดเร็กทอรีมีหลายส่วนของ sass (โดยปกติคือ * .css.scss แต่หนึ่งหรือสอง * .css.scss.erb) ฉันอาจจะคิดมาก แต่ทางรถไฟควรรวบรวมไฟล์ทั้งหมดในไดเร็กทอรีเหล่านั้นโดยอัตโนมัติเนื่องจาก*= require_tree .ใน application.css ใช่ไหม? ฉันเพิ่งลองปรับโครงสร้างไฟล์เหล่านี้โดยลบตัวแปรสีทั้งหมดและวางไว้ในไฟล์ในapp/assets/stylesheetsโฟลเดอร์รูท(_colors.css.scss) จากนั้นฉันสร้างไฟล์ในapp/assets/stylesheetsโฟลเดอร์รูทชื่อ master.css.scss ซึ่งมีลักษณะดังนี้: // Color Palette @import "colors"; // Mixins @import "mixins/buttons/standard_button"; @import "mixins/gradients/table_header_fade"; @import "mixins/vendor_support/rounded_corners"; @import "mixins/vendor_support/rounded_corners_top"; @import "mixins/vendor_support/box_shadow"; @import "mixins/vendor_support/opacity"; ฉันไม่เข้าใจจริงๆว่ารางจัดการลำดับการรวบรวมเนื้อหาอย่างไร แต่เห็นได้ชัดว่ามันไม่ได้อยู่ในความโปรดปรานของฉัน ดูเหมือนว่าไม่มีไฟล์ใดที่ทราบว่ามีการนำเข้าตัวแปรหรือมิกซ์อินจึงทำให้เกิดข้อผิดพลาดและฉันไม่สามารถรวบรวมได้ …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.