2010-11-21 8 views
81

Active Support 3.0.3이 설치되어 있고 Ruby 1.8.7과 함께 Rails 3.0.3이 설치되어 있습니다. 내가 1.week.ago를 사용하려고하면활성 지원 핵심 확장은 어떻게 사용합니까?

나는

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

다른 핵심 확장이 제대로 작동 얻을. 나는 동일한 결과로 친구의 컴퓨터에서 (동일한 설치 사양 및 레거시 버전이 사용 중입니다) 사용해 보았습니다.

무엇을 제공합니까?

이 모든 것은 IRB에 있습니다.

+0

코드가 Rails 응용 프로그램 내에서 실행되는지 또는 일부 Rails 확장을 사용할 Ruby 응용 프로그램에서 실행되는지는 말하지 않습니다. –

+0

[레일 외부에 레일즈 3의 ActiveSupport 코어 익스텐션을 사용하십시오.] (http://stackoverflow.com/questions/3053119/use-rails-3s-activesupport-core-extensions-outside-rails). –

답변

119

때문에이 자동으로 당신이 아닌 레일 스크립트에 적극적인 지원을 추가하려고한다고 가정하겠습니다.

"How to Load Core Extensions"을 읽습니다.

Active Support의 메소드는 Rails 3에서 더 작은 그룹으로 나누어 졌으므로 불필요한 많은 것들을 간단한 require 'activesupport'으로로드하지 않게되었습니다. 이제 우리는 다음과 같은 작업을 수행해야합니다. require 'active_support/core_ext/object/blank'

세분성에 신경 쓰지 않으면 더 큰 청크를로드하도록 선택할 수 있습니다.

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> 
+0

나는 rubygems와 active_record를 먼저 요구해야한다. 그러나이 수정은 그 후에 irb에서 작동한다. – griotspeak

+0

내가 한 모든 것은 예제에있는 것입니다. 1.8.7에서 실행 한 작업도 추가 할 것입니다. –

+1

항상 필요한 경우 - 일부 코드로 연주한다고 가정 해 보자. .irbrc 파일을 추가하거나 수정하여 항상 사용하는 모든 라이브러리를 요구할 수 있습니다. 시작시 자동으로로드됩니다. I.E. 나는 awesome_print, hirb 및 일부 사용자 정의 방법을 항상 사용합니다. 그래서 나는 그저 거기에 넣고 1.hour.ago 또는 ap {: a => 3, : b => "nick과 같은 것을 두 번 생각할 필요가 없습니다. "} 일하다. – konung

-2

콘솔에서 작동합니까? 이것은 나를 위해 노력하고 있습니다 : 사용 레일이 처리해야

$ 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

할 수 있습니다 :
필요 'active_support/core_ext 당신은 하나 개의 큰 꿀꺽 사용의 모든 ...

1.9.2의 경우를 원하는 경우 '
또는
은'active_support/all '이 필요합니다.

+3

Tin Man은 이미 작년에 언급했습니다. –

22

당신은 세부적으로는하지만, 그 순간에,이 불행하게도 Time, DateDateTime에 해당하는

require 'active_support/core_ext/some_class' 

하지 않습니다 수 있습니다 또 다른 레벨 업이 이미

require 'active_support/core_ext/some_class/some_file' 

언급을 통해 라이브러리를 추가 할 수 있습니다 . 이 약

방법이 당신에게 OP는 모든 것을 할 필요없이 요구했다 해결할 Time, DateDateTime을 줄 것이다 require 'active_support/time'이다. active_support/core_ext/datedate_time을 추가


My Rails patch는, 이제 당신이 개별적으로 요구할 수 있습니다, 레일 V4.0.0로했다. 예!

관련 문제