วิธีใช้ส่วนขยายหลักของ Active Support


96

ฉันติดตั้ง Active Support 3.0.3 และ Rails 3.0.3 พร้อม Ruby 1.8.7

เมื่อลองใช้1.week.agoแล้วจะได้รับ

NoMethodError: undefined method 'week' for 1:Fixnum
from (irb):2

ส่วนขยายหลักอื่น ๆ ดูเหมือนจะใช้งานได้ ฉันลองใช้บนคอมพิวเตอร์ของเพื่อน (ข้อกำหนดการติดตั้งเดียวกันและเวอร์ชันเดิมอยู่ในเครื่องของเขา) โดยได้ผลลัพธ์เหมือนกัน

สิ่งที่ช่วยให้?

ทั้งหมดนี้อยู่ใน IRB


คุณไม่ได้บอกว่าโค้ดของคุณกำลังทำงานอยู่ในแอปพลิเคชัน Rails หรือในแอปพลิเคชัน Ruby ที่คุณต้องการใช้ส่วนขยาย Rails
Tin Man

คำตอบ:


137

เนื่องจากการใช้ Rails ควรจัดการสิ่งนี้โดยอัตโนมัติฉันจะถือว่าคุณพยายามเพิ่ม Active Support ไปยังสคริปต์ที่ไม่ใช่ Rails

อ่าน " วิธีโหลดส่วนขยายหลัก "

วิธีการของ Active Support ถูกแบ่งออกเป็นกลุ่มเล็ก ๆ ใน Rails 3 ดังนั้นเราจึงไม่ต้องโหลดสิ่งที่ไม่จำเป็นจำนวนมากด้วยวิธีง่ายๆ require 'activesupport'ดังนั้นเราจะไม่จบลงโหลดจำนวนมากสิ่งที่ไม่จำเป็นกับง่าย ตอนนี้เราต้องทำสิ่งต่างๆเช่น

require 'active_support/core_ext/object/blank'

หากคุณไม่สนใจเรื่องรายละเอียดคุณสามารถเลือกโหลดชิ้นที่ใหญ่กว่าได้ หากคุณต้องการทุกอย่างในการใช้อึกใหญ่ ...

สำหรับ 1.9.2:

rvm 1.9.2
irb -f
irb(main):001:0> require 'active_support/all'
=> true
irb(main):002:0> 1.week.ago
=> 2010-11-14 17:56:16 -0700
irb(main):003:0> 

สำหรับ 1.8.7:

rvm 1.8.7
irb -f
irb(main):001:0> require 'rubygems'
=> true
irb(main):002:0> require 'active_support/all'
=> true
irb(main):003:0> 1.week.ago
=> Sun Nov 14 17:54:19 -0700 2010
irb(main):004:0> 

ฉันต้องใช้ rubygems และ active_record ก่อน แต่การแก้ไขนี้ DID ทำงานใน irb หลังจากนั้น
griotspeak

สิ่งที่ฉันทำคือสิ่งที่อยู่ในตัวอย่าง ฉันจะเพิ่มสิ่งที่ฉันทำเพื่อเรียกใช้ใน 1.8.7 ด้วย
คนดีบุก

1
หากคุณต้องการสิ่งนี้ตลอดเวลา - สมมติว่าคุณกำลังเล่นกับโค้ดหรือบางอย่างคุณสามารถเพิ่มหรือแก้ไขไฟล์. irbrc เพื่อต้องการ libs ทั้งหมดที่คุณใช้ตลอดเวลา มันจะโหลดโดยอัตโนมัติเมื่อเริ่มต้น IE ฉันใช้ awesome_print, hirb และวิธีการที่กำหนดเองตลอดเวลา - ดังนั้นฉันจึงวางไว้ตรงนั้นและไม่ต้องคิดซ้ำสองสำหรับสิ่งต่างๆเช่น 1.hour.ago หรือ ap {: a => 3,: b => " nick "} ไปทำงาน
konung

1
irbtoolsตรวจสอบ รวมถึงการปรับแต่งที่ดีทุกประเภทให้กับ IRB และหากคุณต้องการปิดการใช้งานชั่วคราวโทรหาirb -fและจะไม่โหลด
คนดีบุก

ฉันจะเพิ่มว่าความร้อนแรงใหม่คือPryสำหรับเซสชันโต้ตอบ Ruby ที่น่าประทับใจมาก.
the Tin Man

28

คุณสามารถเพิ่มไลบรารีแบบละเอียดผ่านทางที่กล่าวถึงแล้ว

require 'active_support/core_ext/some_class/some_file'

นอกจากนี้ยังมีอีกระดับที่คุณสามารถทำได้

require 'active_support/core_ext/some_class'

แต่ในขณะนี้เป็นที่น่าเสียดายที่ไม่สามารถใช้ได้สำหรับTime, และ DateDateTime

วิธีที่รอบนี้คือการrequire 'active_support/time'ที่จะให้คุณTime, DateและDateTimeที่จะแก้ OP ถูกขอโดยไม่ต้องทุกอย่าง


แพทช์ My Railsซึ่งเพิ่มactive_support/core_ext/dateและdate_timeทำให้เป็น Rails v4.0.0ดังนั้นตอนนี้คุณสามารถต้องการสิ่งเหล่านี้ทีละรายการ เย้!



-3

ใช้งานได้จากคอนโซลหรือไม่ สิ่งนี้ใช้ได้ผลสำหรับฉัน:

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.6.5
BuildVersion:   10H574

$ rails c
Loading development environment (Rails 3.0.3)
>> 1.week.ago
=> Sun, 14 Nov 2010 16:57:18 UTC +00:00

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.