2011-03-25 2 views
84

이전에는 문제가 없었습니다. 나는 약간의 설정을 해왔다. 그래서 일부 설정을 모르게 변경했을 수 있습니다. 여기레일 콘솔 : 새로 고침! 모델 파일의 변경 사항을 반영하지 않습니까? 가능한 이유는 무엇일까요?

다음
config.cache_classes = false 

    # Log error messages when you accidentally call methods on nil. 
    config.whiny_nils = true 

    # Show full error reports and disable caching 
    config.consider_all_requests_local  = true 
    config.action_view.debug_rjs    = true 
    config.action_controller.perform_caching = false 

    # Don't care if the mailer can't send 
    config.action_mailer.raise_delivery_errors = false 

    # Print deprecation notices to the Rails logger 
    config.active_support.deprecation = :log 

    # Only use best-standards-support built into browsers 
    config.action_dispatch.best_standards_support = :builtin 

    # migration prefix with sequence #s 
    config.active_record.timestamped_migrations = false 

    #time zone 
    config.time_zone = 'UTC' 

# Configure the default encoding used in templates for Ruby 1.9. 
config.encoding = "utf-8" 

# Configure sensitive parameters which will be filtered from the log file. 
config.filter_parameters += [:password] 

config.active_record.schema_format = :sql 

내가 다시로드를 실행 application.rb

의 설정 부분은 환경 설정/development.rb입니다! 레일 콘솔에서 true를 반환합니다.

답변

141

reload!은 콘솔 환경에서만 최신 코드를 다시로드합니다. 기존 개체를 다시 초기화하지 않습니다.

즉, 이미 개체를 인스턴스화 한 경우 속성이 업데이트되지 않습니다. 그러나 새 객체를 만들면 해당 속성에 다시로드 된 코드가 반영됩니다. more here

+0

사용자 지정 유효성 검사는 어떻게됩니까? 일부 메소드를 정의하고 validate로 등록했습니다. 유효성 검사 논리를 변경하면 다시로드되지 않습니다. –

+2

개체를 다시 초기화 할 때 반영됩니다. –

15

데이터베이스에서 개체를 다시로드하고 있습니까? 예를 들어

:

>> a = User.last 
=> #<User id: 16, email: "[email protected]"> 
>> reload! 
Reloading... 
=> true 

당신은 DB에서 다시로드 할 때까지 '는이'모델에 대한 변경 사항을 반영하지 않습니다

.

+1

참고 - 이는 개체의 메서드에 액세스 할 때도 마찬가지입니다. 예를 들어 클래스 메소드 foo()의 정의를 변경하면 콘솔에서 a.foo는 처음으로 a를 다시로드하지 않는 한 새 정의를 사용하지 않습니다. – jpwynn

관련 문제