এটি করার জন্য আমি একটি মার্জিত, রেলের মতো উপায় বের করেছি। প্রথমে আপনার .scss
ফাইলটির নাম পরিবর্তন করুন .scss.erb
, তারপরে এই জাতীয় সিনট্যাক্স ব্যবহার করুন ( হাইলাইট_js-Rails4 রত্ন সিএসএস সম্পদের উদাহরণ হিসাবে ):
@import "<%= asset_path("highlight_js/github") %>";
আপনি এসসিএসএসের মাধ্যমে ফাইলটি কেন সরাসরি হোস্ট করতে পারবেন না :
আপনি এসএসএসএস-এ কোনও @import
কাজ করা ততক্ষণ সিএসএস ফাইলের জন্য সূক্ষ্মভাবে কাজ করে যতক্ষণ আপনি স্পষ্টভাবে পুরো পথটি এক বা অন্য কোনওভাবে ব্যবহার করেন। বিকাশ মোডে, rails s
সম্পদগুলি সংকলন না করে পরিবেশন করে, তাই এর মতো পথটি ...
@import "highlight_js/github.css";
... কারণ হোস্ট করা পথটি আক্ষরিক /assets/highlight_js/github.css
। আপনি যদি পৃষ্ঠায় ডান ক্লিক করেন এবং "উত্স দেখুন", তবে উপরের স্টাইলশিটের জন্য লিঙ্কটি ক্লিক করুন @import
, আপনি সেখানে একটি লাইন দেখতে পাবেন যাতে দেখতে:
@import url(highlight_js/github.css);
এসসিএসএস ইঞ্জিনটি অনুবাদ "highlight_js/github.css"
করে url(highlight_js/github.css)
। সম্পত্তির পূর্বনির্ধারিত যেখানে ফাইলের নামের সাথে একটি হ্যাশ ইনজেকশন দেওয়া থাকে সেখানে প্রযোজনা চালানোর চেষ্টা করার সিদ্ধান্ত না নেওয়া পর্যন্ত এটি সাঁতার দিয়ে কাজ করবে। এসসিএসএস ফাইলটি এখনও এমন একটি স্ট্যাটিকের সমাধান করবে /assets/highlight_js/github.css
যা প্রাক্পম্পাইল করা হয়নি এবং উত্পাদনে বিদ্যমান নেই।
এই সমাধানটি কীভাবে কাজ করে:
প্রথমত, .scss
ফাইলটিতে স্থানান্তরিত করে .scss.erb
, আমরা কার্যকরভাবে এসএসএসএসকে রিয়েলগুলির টেম্পলেটে পরিণত করেছি। এখন, যখনই আমরা <%= ... %>
টেমপ্লেট ট্যাগগুলি ব্যবহার করি , তখন রেল টেম্পলেট প্রসেসর এই স্নিপেটগুলি কোডের আউটপুট (অন্য কোনও টেম্পলেটের মতো) সহ প্রতিস্থাপন করবে।
চিঠিতে asset_path("highlight_js/github")
মধ্যে .scss.erb
ফাইল দুটি জিনিস আছে:
rake assets:precompile
যথাযথ সিএসএস ফাইলটি প্রাকপম্পাইল করার জন্য কার্যটি ট্রিগার করে ।
- একটি ইউআরএল তৈরি করে যা রেলের পরিবেশ নির্বিশেষে সম্পদটি যথাযথভাবে প্রতিফলিত করে।
এর অর্থ হ'ল এসসিএসএস ইঞ্জিন এমনকি সিএসএস ফাইলটিও পার্স করছে না; এটি কেবল এটির একটি লিঙ্ক হোস্টিং করছে! সুতরাং কোনও হকি বানর প্যাচ বা স্থূল কর্মক্ষেত্র নেই। আমরা এসএসএসএসের মাধ্যমে সিএসএস সম্পদটি ইচ্ছাকৃতভাবে পরিবেশন করছি এবং সিএসএস অ্যাসেটটিকে ব্যয় হিসাবে চিহ্নিত করতে একটি ইউআরএল ব্যবহার করছি। খুব সুন্দর!