2016-12-30 5 views
1

私はHerokuにデプロイしています.SQLiteからPostgresにいくつかのRubyサンプルコードを翻訳する必要があります。Ruby:sqliteコマンドをpostgresコマンドに翻訳する

これは、元のSQLiteのコードです:

#SQLite table 
DB = Sequel.connect('sqlite://gcm-test.db') 
DB.create_table? :Device do 
    primary_key :reg_id 
    String :user_id 
    String :reg_token 
    String :os, :default => 'android' 
end 
Device = DB[:Device] # create the dataset 

私は、テーブル作成部を翻訳してきたが、私は最後の行は何を意味するのか分かりません。

Device = DB[:Device] # create the dataset 

これは、翻訳されたPostgresのコードは、これまでのように見えるものです:

DB = PG.connect(ENV['DATABASE_URL']) 
DB.exec "DROP TABLE IF EXISTS Device" 
DB.exec "CREATE TABLE Device(reg_id INTEGER PRIMARY KEY, user_id text, reg_token text, os text DEFAULT 'android')" 
Device = DB[:Device] # create the dataset 

私はHerokuの上でローカルにそれを実行しようとすると、私はこのエラーを取得:

in `<main>': undefined method `[]' for #<PG::Connection:0x007fe7ca7a6610> (NoMethodError) 

は誰もいこの行で何をすべきかを知っていますか?

+2

Ruby Sequelがこれを行うだけです。 PostgresとSQLiteのRuby Sequelを使用しているだけではない理由はありますか? 「Sequel.connect」は、SQLiteだけでなく、さまざまなSQLバックエンドで使用できます。例えば'DB = Sequel.connect(" postgres:// localhost/mydb ")' – Joe

+0

ありがとう。 PGデータベースが作成されていると思います。この行だけでエラーを出しています:Device = DB [:Device]#データセットの作成 – mjpablo23

+1

Sequelライブラリは、基本的なSQL以外の追加作業をしています。データセットの処理は非常に広範かつ動的です。あなたは基本的にSequel ORMライブラリを置き換えていますし、それはネイティブのPostgresクライアントlibで(そして多くのことをしています)すべてを置き換えています。あなた自身のコードでRuby Sequelのすべてのデータセット処理を再実装する必要があります。 – Joe

答えて

0

はちょうどジョーが言ったように

DB = Sequel.connect(ENV['DATABASE_URL']), 

にそれを変更しなければなりませんでした。

関連する問題