0

というタスクがある rakefile.rb がありますadd_latest_apps。このタスクは、datamapper を使用して作成されていない場合にデータベースにいくつかのテーブルを作成し、xml フィードからいくつかの情報をスクレイピングしてから、データをテーブルに配置します。問題は、rake タスクを実行できないように見えることです。

次のコマンドを使用すると、次のよう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'

助けてください!

4

1 に答える 1

1

DATABASE_URL環境変数を設定する必要があります。

問題は次の行にあります。

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

ここでDataMapperを検索しENV['DATABASE_URL']、設定されていない場合は にフォールバックし"sqlite3://#{Dir.pwd}/app.db"、 をロードしようとしますdm-sqlite-adapter

環境変数を表示するために実行heroku configしますが、おそらく表示されませんDATABASE_URLHeroku Postgres のドキュメントを参照して、URL を確認してください。次のようなことができるかもしれませんheroku pg:promote HEROKU_POSTGRESQL_GRAY_URL(ただし、使用する色を確認する必要があります)。

于 2012-11-24T22:25:40.947 に答える