2009-10-27 2 views
2

플러그인을 만들려고합니다. 코드를 변경할 때마다 레일의 개발 모드에서 일반적으로 발생하는 동일한 자동 다시로드를 모방 할 때마다 자동 다시로드를 개발 중입니다. 내 플러그인은 주로 ActiveRecord mixin 모듈입니다. 관련 Google 검색에서 내가 찾은 모든 제안을 시도했습니다. 아무것도 아직 효과가 없습니다. 내 플러그인의 init.rb에서레일을 자동으로 다시로드하는 플러그인 개발 모드

:

require 'activesupport' unless defined? ActiveSupport 
require 'activerecord' unless defined? ActiveRecord 

if RAILS_ENV == 'development' 
    ActiveSupport::Dependencies.load_once_paths.delete lib_path 
    ActiveSupport::Dependencies.load_once_paths.delete File.join(lib_path, 'crowd_compass', 'publisher.rb') 

    ActiveSupport::Dependencies.load_paths << lib_path 
    ActiveSupport::Dependencies.load_paths << File.join(lib_path, 'crowd_compass', 'publisher.rb') 
end 

ActiveRecord::Base.send(:include, CrowdCompass::Publisher) 

하는 레일 변경 로그에 보면, 나는 자동 다시로드 기능을 모든 플러그인을 발견했다. 나는 내 conf의 /으로 environment.rb에 추가 할 때

내 플러그인이 구조화 된 모든 파일이 자동으로로드 네임 스페이스 => 디렉토리가 있습니다됩니다에 예상대로

config.reload_plugins = true if RAILS_ENV == 'development' 

작동하지 않았다. 필자는 플러그인을 자동으로 다시로드하지 못하게하는 것이 필요하다고 생각하여 "필요"를 사용하지 않도록 할 수 있도록이 작업을 수행했습니다.

저는 레일 콘솔을 통해 개발 모드에서 모든 작업을하고 있었고 이것이 잡종 (또는 웹 서버처럼)을 통해 실행되는 것과는 다른 동작을하는지 모릅니다.

플러그인이 예상대로 작동하지만 코드를 변경할 때마다 다시로드해야합니다. 누구든지 플러그인을 다시로드 할 수있는 방법을 알고 있습니까?

답변

1

콘솔이 잡종처럼 작동하지 않습니다. 사용중인 모든 기술은 모든 요청시 다시로드됩니다. 이는 콘솔을 시작할 때마다 비슷합니다.

reload!을 호출하지 않고 콘솔에서 코드를 다시로드하는 방법은 없습니다.

+0

나는 그것이 두려웠다. 나는 심지어 재 장전에 만족했을 것이다!, 그러나 그것은 나에게도 맞지 않았다. 대신 플러그인에서 아무 것도 변경할 때마다 콘솔을 완전히 다시 시작해야합니다. 이 문제가 해결되면 플러그인 개발이 쉬울 것입니다. 당신의 답변에 감사드립니다. –

+0

필기 시험을 보았습니까? 플러그인을 테스트 해 본다면 콘솔을 너무 많이 다시로드 할 필요가 없습니다. –

+1

@BJ Clark. 며칠 전 Rspec으로 플러그인 테스트를 시작했습니다. 그것은 훨씬 더 빠르며 플러그인을위한 autospec을 설정하면 플러그인 디렉토리에 파일을 저장할 때마다 내 테스트가 실행되는 것을 보는 것이 매우 좋았습니다. 내 플러그인을 수동으로 테스트하려고 할 때 내가 무엇을 생각하고 있었는지 모르겠다. –