これはActiveRecordを使用してデータベースと通信するRubyの非Webプロジェクトです。ActiveRecord :: Migration非推奨警告 - Railsのバージョンを要求しますが、私はRailsを使用していません
db接続コード、移行、およびモデルを含む1つのファイルがあります。質問はこのラインについてです(それは質問に答えるために、これを読んでする必要はありません)
require 'sqlite3'
require 'active_record'
require 'yaml'
require 'active_support/all'
require 'securerandom'
BasePath = "#{File.dirname(__FILE__)}/.."
DATABASE_FILENAME = "database.sqlite"
DATABASE_PATH = "#{BasePath}/#{DATABASE_FILENAME}"
SQLite3::Database.new(DATABASE_PATH)
ActiveRecord::Base.establish_connection(
adapter: 'sqlite3',
database: DATABASE_PATH
)
class Migrations < ActiveRecord::Migration
def up
create_table :todos do |t|
t.string :content
t.boolean :completed
t.timestamps null: false
end
end
def down
puts "backing up database".red_on_black if File.file?(DATABASE_PATH)
loop { (`cp #{DATABASE_PATH} #{DATABASE_PATH}-#{SecureRandom.urlsafe_base64}.backup`; break) rescue next }
sleep 0.5
drop_table :todos
puts "dropped todos table"
end
end # Migrations
class Todo < ActiveRecord::Base
end
こちらをご覧ください:
class Migrations < ActiveRecord::Migration
私はMigrations.migrate(:up)
で移行を実行すると、私は非推奨を取得警告:
DEPRECATION WARNING: Directly inheriting from ActiveRecord::Migration is deprecated.
Please specify the Rails release the migration was written for:
class Migrations < ActiveRecord::Migration[4.2]
それは私が
に私のクラス定義を変更するアドバイスのようにclass Migrations < ActiveRecord::Migration[4.2]
そして、私はもう警告を受け取りません。
誰かがこの目的を説明できるかどうか疑問に思います。
私のアプリはどのバージョンのRailsにも依存しません。なぜ私は
のRailsバージョンを指定する必要がありますか?
ワウ! @rafaelfranca!ここに説明してくれてありがとう..)+1 – uday
レール外でARを使用している人にとっては混乱しますが、意味があります。 –
@rafaelfranca宝石の保守担当者が両方のレールをサポートするために自動生成された移行スクリプトを更新する方法に関するアドバイス4。1歳以上、新しいRails移行API私がこれに使用したソリューションはハッキーです。例:Rails :: VERSION :: STRING [0..2] .to_f> = 5 active_record_migration_class = ActiveRecord :: Migration [Rails :: VERSION :: STRING [0..2] .to_f] その他 active_record_migration_class = ActiveRecord :: Migration end'''よりエレガントなものがありますか? – Kelseydh