2013-11-27 2 views
1

를 설치 고안했기 때문에 내 레일 3.2.3 어플은 bdm_content_server왜 내 엔진 플러그인

내가 bdmcs라는 레일 엔진 플러그인을 가지고라는 레일 응용 프로그램이 실패한다.

엔진이 내 응용 프로그램에 로컬 파일로 설치됩니다.

gem "bdmcs", :path => "../bdmcs" 

이 엔진은 잘 실행되고, 나는에 WEBrick을 실행할 때 응용 프로그램을 통해이 컨트롤러와 뷰를 접근 할 수 있었다.

엔진의 내부에 장치를 설치하여 엔진의보기에 액세스 할 수있는 사용자를 제어합니다. 설치는 괜찮 았는데 (약간 수정 ala Rails engine and devise), 엔진 내에서 데이터베이스 마이그레이션을 실행할 수 있었지만 설치 한 응용 프로그램을 마이그레이션하려고 할 때 오류가 발생했습니다 :

undefined method `secret_key=' for Devise:Module 
/var/apps/bdm_content/bdmcs/config/initializers/devise.rb:7:in `block in <top (required)>' 
/var/lib/gems/1.9.1/gems/devise-2.2.8/lib/devise.rb:267:in `setup' 
/var/apps/bdm_content/bdmcs/config/initializers/devise.rb:3:in `<top (required)>' 

응용 프로그램이 엔진의 장치 설정 및 구성을 승인하지 않는 것 같습니다.

나는 응용 프로그램에 대한 Gemfile에 설치된 유증 보석을 가지고, 내가 그것을 제거하면 나는 다른 오류 얻을 :

cannot load such file -- devise 
/var/apps/bdm_content/bdmcs/lib/bdmcs.rb:1:in `require' 
/var/apps/bdm_content/bdmcs/lib/bdmcs.rb:1:in `<top (required)>' 

사람이 어떤 생각을 가지고 있습니까?

비슷한 질문을했지만 주위에 응용 프로그램이나 장치가있는 Devise와 관련된 질문 만 찾았습니다.

Devise.setup do |config| 
    config.secret_key = 'some_random_key' 
    config.mailer_sender = '[email protected]' 
    require 'devise/orm/active_record' 
    config.case_insensitive_keys = [ :email ] 
    config.strip_whitespace_keys = [ :email ] 
    config.skip_session_storage = [:http_auth] 
    config.stretches = Rails.env.test? ? 1 : 10 
    config.reconfirmable = true 
    config.password_length = 8..128 
    config.reset_password_within = 6.hours 
    config.sign_out_via = :delete 
    config.router_name = :bdmcs_user 
end 

그리고 내/bdmcs/lib 디렉토리 : - 사전 에서

감사 Testero

여기 (고안에 의해 내 엔진에 설치로) 내 /bdmcs/config/initializers/devise.rb 파일입니다 /bdcms.rb 파일 :

require 'devise' 
require "bdmcs/engine" 

module Bdmcs 
end 

수정 됨 - 선명도와 더 자세히

답변

0
config.secret_key = 'Your secret Key' 

당신은 비밀 키를 생성하는 rake secret을 사용할 수 있습니다 : 당신의 config/initializers/devise.rb 파일에서이 줄을 추가합니다.

Gemfile에서 최신 버전의 Devise를 사용하고 있는지 확인하십시오.

또한 서버를 다시 시작하십시오. 이렇게하면 내 문제 중 99 %가 사라졌습니다.

+0

이 줄은 내 엔진 플러그인 내부의 devise.rb에 이미 설정되어 있지만, 그 부분은 문제가됩니다. devise가 엔진 외부에서 인식되지 않기 때문에 config 변수가 설정되지 않은 것입니다. 아니면 내 애플리케이션에도 추가 하시겠습니까? 난 devise.rb initializer 거기 없어. – Jocko

+0

좋아, engine.rb에 'devise'가 필요합니다. –

+0

예, 해당 파일의 내용으로 질문을 업데이트했습니다. – Jocko

0

나는 Devise 버전 문제라고 알았습니다. 어떤 이유

, 엔진 내부 고안 버전 3.2.2에 설치되는 한, 그 일이 어떻게 특정 버전을 지정하지 않았기 때문에 응용 프로그램에 설치된 유증은 2.2.8

확실하지 않았다 , 둘 다 동일한 레일 환경에서 생성되었습니다.

업그레이드 한 후 Railties와 Devise간에 버전 충돌이 발생하여 결국 Rails를 4.0.0 (및 그 외의 모든 것들)으로 업그레이드해야만했습니다.

여전히 bundler 버전 문제가 있지만, bundle exec ...을 사용하여 레이크 및 레일 작업을 실행하는 것으로 해결했습니다.

관련 문제