2017-11-15 5 views
2

은 우리가 보석을 필요로 할 때 모든 것들을 이용할 수 있습니까?

그래서 지금 ActionPack 모듈은 콘솔에서 사용할 수 require 'rails'

irb(main):001:0> Rails 
NameError: uninitialized constant Rails 

irb(main):002:0> ActionPack 
NameError: uninitialized constant ActionPack 

require 'rails'

irb(main):005:0> require 'rails' 
true 
irb(main):007:0> Rails.constants 
[:Railtie, :Rack, :Initializable, :Configuration, :WelcomeController, :InfoController, :VERSION, :Paths, :Info, :MailersController, :Application, :Engine] 

irb(main):009:0> ActionPack.methods-Object.methods 
[:gem_version, :version, :initialize_copy] 

후 전에, 어떤 다른 모듈 또는 클래스 (있는 경우 예를

을위한 레일에게 보석을 보자 any)를 사용할 수 있고 모듈에 대해 어떻게 알 수 있습니까?

답변

3

최대 개발자에게 달려 있습니다. 네임 스페이스와 오브젝트 스페이스가 어떻게 변했는지 보려면 많은 영리한 방법이 있어야합니다.

내가 찾는 방법 곧 대답하는 새로운 모듈 (-Constants)이 있습니다 :

initial_modules = Module.constants 
    # -> [:Object, :Module, :Class, :BasicObject, :Kernel, :NilClass, ...] 

    require 'rails' 

    Module.constants - initial_modules # all NEW constants 
    # -> [:Pathname, :OpenSSL, :Digest, :SecureRandom, :Concurrent, :I18n, :CGI, :ActiveSupport, :Set, :SortedSet, :Timeout, :TimeoutError, :Logger, :LoggerSilence, :DateAndTime, :Psych, :StringScanner, :ScanError, :Date, :DateTime, :YAML, :Base64, :TSort, :Rails, :BigDecimal, :BigMath, :TZInfo, :ThreadSafe, :Threadsafe, :SynchronizedDelegator, :JSON, :OpenStruct, :Singleton, :Mutex_m, :ActionPack, :Rack, :ActionDispatch, :Mime] 

보시다시피,이 또한 필요합니다 (그러나 제공되지 않음)되는 새 물건을 많이 함께 제공하여 레일스, 날짜, OpenSSL 등. 실제로 런타임시 요구 사항이 발생할 수 있으므로 코드를 사용할 때 목록이 커집니다. 희망이 조금 도움이됩니다.