2011-03-10 7 views
36

사용자 테이블에 사용자를 추가하는 Ruby (1.9.2) -on-Rails (3.0.5) 레이크 작업을 정의하고 싶습니다. 이 파일은 다음과 같습니다레일 레이크 작업 - 모델 클래스에 대한 액세스

#lib/tasks/defaultuser.rake 
require 'rake' 
namespace :defaultuser do 
    task :adduser do 
    u=User.new 
    u.email="[email protected]" 
    u.password="password" 
    u.save 
    u.errors.each{|e| p e} 
    end 
end 

나는 그때가의 코드 테스트

> rake defaultuser:adduser 

로 작업을 호출 할 것이다 : 레일 콘솔에서 adduser 명령 작업을하고, 그것을 잘 작동합니다. 나는 작업의 몸에만

print "defaultuser:adduser" 

를 실행 레이크 작업을 테스트하고 괜찮 았는데. 내가 그들을 결합 될 때

그러나, 그것은
rake aborted! 
uninitialized constant User 

내가 레이크 파일의 네임 스페이스 정의 이상에서

require File.expand_path('../../../app/models/user.rb', __FILE__) 

을 시도라고, 불평하지만, 작동하지 않았다. 내가 가지고있어

rake aborted! 
ActiveRecord::ConnectionNotEstablished 

레일즈 콘솔에있는 레이크 작업에서 사용자 모델 클래스에 동일한 액세스 권한을 가지려면 무엇을해야합니까?

+0

비슷한 질문 : [? 레일 작업 액티브 모델에 대한 액세스를 제공 레이크 수행] [1] [1] : http://stackoverflow.com/questions/876396/do-rails-rake-tasks -provide-access-to-activerecord-models –

답변

91

당신이 가까이있어 :)

#lib/tasks/defaultuser.rake 
require 'rake' 
namespace :defaultuser do 
    task :adduser => :environment do 
    ... 
    end 

주 사용 : 레이크 작업을 호출하기 전에 필요한 레일 환경을 설정 환경. 그 후에는 User 객체가 범위에 포함됩니다.

+3

Ahhhhhhhhhhhhh! 나는 거의 근접했다. 나는 구문을 얻지 못한다. –

+0

http://jasonseifer.com/2010/04/06/rake-tutorial이 자습서에서는 문제에 대해 더 자세히 설명하고 레이크 작업을 매개 변수화하는 좋은 방법을 보여줍니다. –