пытаясь использовать ActiveRecord с Sinatra, вопрос миграции не удается - PullRequest
1 голос
/ 31 мая 2010

под управлением Sinatra 1.0, я хотел добавить таблицу базы данных в свою программу.В моем Rakefile у меня есть задача

task :environment do   
    ActiveRecord::Base.establish_connection(YAML::load(File.open('config/database.yml'))["development"])      
end

В моем пространстве имен есть задача миграции, которая вызывает код миграции:

    namespace :related_products do  
      desc "run any migrations we may have in db/migrate"
      task :migrate => :environment do   
        ActiveRecord::Migrator.migrate('db/migrate', ENV["VERSION"] ? ENV["VERSION"].to_i : nil )   
    end 

Моя консоль выдает ошибку при вызове ActiveRecord:: MIgrator.migrate () сделан.грабли прерваны!undefined метод `info 'для nil: NilClass

Сам код миграции довольно прост ... и не дает никаких подсказок относительно того, что представляет собой этот отсутствующий класс информации.

    class CreateStores < ActiveRecord::Migration
      def self.up       
        create_table :stores do |t|
          t.string :name
          t.string :access_url
          t.timestamps
        end
      end

      def self.down
        drop_table :stores
      end
    end  

IЯ немного озадачен здесь и ищу некоторые подсказки относительно того, что может быть не так.Спасибо!

Простой обратный след показывает, что наступательная линия - это просто призыв к миграции:

    rake aborted!
undefined method `info' for nil:NilClass
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.5/lib/active_record/migration.rb:473:in `migrate'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.5/lib/active_record/migration.rb:472:in `each'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.5/lib/active_record/migration.rb:472:in `migrate'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.5/lib/active_record/migration.rb:400:in `up'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.5/lib/active_record/migration.rb:383:in `migrate'
/Users/baz/Documents/workspace/rp/Rakefile:26
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `call'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `execute'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `each'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `execute'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:597:in `invoke_with_call_chain'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/monitor.rb:242:in `synchronize'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:590:in `invoke_with_call_chain'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:583:in `invoke'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2051:in `invoke_task'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `top_level'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `each'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `top_level'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2023:in `top_level'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2001:in `run'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:1998:in `run'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/bin/rake:31
/usr/bin/rake:19:in `load'
/usr/bin/rake:19

1 Ответ

3 голосов
/ 29 июня 2010

Я только что столкнулся с этой же проблемой, и исправление было в том, чтобы дать ActiveRecord некоторую информацию о том, куда выводить информацию о журналировании.

Я добавил следующее в мой Rakefile

ActiveRecord::Base.logger = Logger.new(STDOUT)
ActiveRecord::Migration.verbose = true

-Timmy

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...