2012-11-24 1 views
0

나는 add_latest_apps라는 작업이있는 rakefile.rb 있습니다. 이 작업은 datamapper를 사용하여 생성되지 않은 일부 테이블을 데이터베이스에 작성하고 XML 피드에서 일부 정보를 스크랩 한 다음 테이블에 데이터를 넣습니다. 문제는 내 레이크 작업을 실행할 수없는 것입니다.나는 스케쥴러를 사용하여 heroku에서 datamapper와 관련된 레이크 작업을 실행하려고 시도하고 있지만 heroku가 sqlite를 사용하려고 시도하는 것 같습니다.

heroku run rake add_latest_apps 다음 명령을 사용하는 경우 : rake aborted! no such file to load -- dm-sqlite-adapter 이것은 postgres 어댑터를 사용해야하는 경우에도 sqlite 어댑터를 사용하려고합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

rakefile.rb :

require 'open-uri' 
require 'nokogiri' 
require 'awesome_print' 
require 'data_mapper' 
require 'dm-postgres-adapter' 
require 'pg' 

task :add_latest_apps do 
    DataMapper.setup(:default, ENV['DATABASE_URL'] || "sqlite3://#{Dir.pwd}/app.db") 

class Company 
    include DataMapper::Resource 

    property :id, Serial 
    property :company_name, String 
    property :company_id, Text, :unique => true 

    has n, :apps 
end 

class App 
    include DataMapper::Resource 

    property :id, Serial 
    property :app_id, Integer 
    property :bundle_id, Text 
    property :app_name, Text 
    property :company_name, Text 
    property :created_at, DateTime 
    property :rank, Integer 

    belongs_to :company 
end 

DataMapper.finalize.auto_upgrade! 

puts 'Database and tables created' 

#Get App data from Apple 
#Insert apps and companies into database 

end 

Gemfile :

source :rubygems 
gem 'sinatra', '1.1.0' 
gem 'thin' 
gem 'nokogiri' 
gem 'awesome_print' 
gem 'data_mapper' 
gem 'dm-postgres-adapter' 
gem 'pg' 

이 도와주세요!

답변

1

당신은 DATABASE_URL 환경 변수를 설정해야합니다.

문제는 라인입니다 : 여기 DataMapper

DataMapper.setup(:default, ENV['DATABASE_URL'] || "sqlite3://#{Dir.pwd}/app.db") 

ENV['DATABASE_URL']를 검색하고, 설정되지 않은 경우는 dm-sqlite-adapter를로드하려고 원인이되는, 다시 "sqlite3://#{Dir.pwd}/app.db"에 떨어진다.

실행 heroku config는 probaby DATABASE_URL 표시되지 않습니다, 당신의 환경 바르를 표시합니다. Heroku Postgres docs을 확인하여 URL이 무엇인지 확인하십시오. heroku pg:promote HEROKU_POSTGRESQL_GRAY_URL과 같은 것을 할 수 있습니다 (사용할 색을 확인해야하지만).

+0

응용 프로그램은 실제로 순간에 설정 데이터베이스가없는 것 같다. 나는 그것을 설정하는'DataMapper.setup' 사용자에게 노력하고 있습니다. (?!하지만 물론 아직 존재 나던) 내가 Heroku가 함께'ENV [ 'DATABASE_URL를'] 작업을 DataMapper을 얻기에 관하여 읽은 내용에서'내 DB의 주소를 포함 실제로해야 –