2010-11-21 23 views
81

Tôi đã cài đặt Hỗ trợ Hoạt động 3.0.3 và Rails 3.0.3 với Ruby 1.8.7.Tôi làm cách nào để sử dụng tiện ích mở rộng cốt lõi của Hỗ trợ Hoạt động?

Khi tôi cố gắng sử dụng 1.week.ago tôi nhận được

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

Các phần mở rộng cốt lõi khác có vẻ làm việc. Tôi đã thử nó trên máy tính của một người bạn (cùng một cài đặt thông số kỹ thuật và phiên bản cũ là trên của mình) với kết quả tương tự.

Điều gì mang lại?

Tất cả điều này là trong IRB.

+0

Bạn không nói liệu mã của bạn có đang chạy bên trong ứng dụng Rails hay trong ứng dụng Ruby mà bạn muốn sử dụng một số tiện ích Rails trong đó. –

+0

Bản sao của [Tiện ích mở rộng lõi ActiveSupport của Rails 3 sử dụng bên ngoài đường ray] (http://stackoverflow.com/questions/3053119/use-rails-3s-activesupport-core-extensions-outside-rails). –

Trả lời

119

Do sử dụng Rails nên xử lý tự động Tôi sẽ giả sử bạn đang cố gắng thêm Hỗ trợ hiện hoạt vào tập lệnh không phải Rails.

Đọc "How to Load Core Extensions".

Các phương thức của Hỗ trợ hiện hoạt đã được chia thành các nhóm nhỏ hơn trong Rails 3, vì vậy chúng tôi không tải lên nhiều thứ không cần thiết với một đơn giản require 'activesupport'. Bây giờ chúng tôi phải làm những việc như require 'active_support/core_ext/object/blank'

Nếu bạn không quan tâm đến mức độ chi tiết, bạn có thể chọn tải các khối lớn hơn. Nếu bạn muốn tất cả mọi thứ trong một sử dụng ngụm lớn ...

Đối với 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> 

Đối với 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> 
+0

tôi phải yêu cầu rubygems và active_record trước, nhưng điều này sửa chữa DID làm việc trong irb sau đó. – griotspeak

+0

Tất cả những gì tôi làm là trong ví dụ. Tôi sẽ thêm những gì tôi đã làm để chạy nó trong 1.8.7 cũng. –

+1

nếu bạn cần điều này tất cả các thời gian - hãy nói rằng bạn đang chơi với một số mã hoặc một cái gì đó, bạn có thể thêm hoặc sửa đổi tập tin .irbrc để yêu cầu tất cả libs mà bạn sử dụng tất cả các thời gian. Nó sẽ tự động tải chúng khi bắt đầu. I E. Tôi sử dụng awesome_print, hirb và một số phương pháp tùy chỉnh mọi lúc - vì vậy tôi chỉ đặt chúng ở đó và không phải suy nghĩ hai lần cho những thứ như 1.hour.ago hoặc ap {: a => 3,: b => "nick "} làm việc. – konung

-2

Tính năng này có hoạt động trên bảng điều khiển không? Tính năng này đang hoạt động cho tôi:

$ 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 
-4

Bạn có thể:
require 'active_support/core_ext '
hoặc:
yêu cầu' active_support/all '

+3

Tin Man đã đề cập đến những người đó, năm ngoái. –

22

Bạn granularly có thể thêm các thư viện thông qua đã đề cập

require 'active_support/core_ext/some_class/some_file' 

Ngoài ra còn có một mức độ lên nơi bạn có thể

require 'active_support/core_ext/some_class' 

Tuy nhiên, tại thời điểm này, đây là tiếc là không có sẵn cho Time, DateDateTime .

Cách này là require 'active_support/time' sẽ cung cấp cho bạn Time, DateDateTime sẽ giải quyết được yêu cầu mà không yêu cầu mọi thứ.


My Rails patch, mà thêm active_support/core_ext/datedate_time, làm cho nó vào Rails v4.0.0, vì vậy bây giờ bạn có thể yêu cầu các cá nhân. YAY!

Các vấn đề liên quan