2015-09-07 124 views
0

我想为使用Sinatra的Ruby项目创建迁移。我的模型类在app.rb文件中。当我运行create_migration:无法创建耙数据库迁移

rake db:create_migration NAME=create_admins 

我与跟踪以下异常:

rake db:create_migration NAME=create_admins --trace 
rake aborted! 
Don't know how to build task 'db:create_migration' 
/usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/rake/task_manager.rb:62:in `[]' 
/usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/rake/application.rb:149:in `invoke_task' 
/usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/rake/application.rb:106:in `block (2 levels) in top_level' 
/usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/rake/application.rb:106:in `each' 
/usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/rake/application.rb:106:in `block in top_level' 
/usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/rake/application.rb:115:in `run_with_threads' 
/usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/rake/application.rb:100:in `top_level' 
/usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/rake/application.rb:78:in `block in run' 
/usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/rake/application.rb:176:in `standard_exception_handling' 
/usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/rake/application.rb:75:in `run' 
/usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/gems/2.2.0/gems/rake-10.4.2/bin/rake:33:in `<top (required)>' 
/usr/local/rvm/gems/ruby-2.2.1/bin/rake:23:in `load' 
/usr/local/rvm/gems/ruby-2.2.1/bin/rake:23:in `<main>' 
/usr/local/rvm/gems/ruby-2.2.1/bin/ruby_executable_hooks:15:in `eval' 
/usr/local/rvm/gems/ruby-2.2.1/bin/ruby_executable_hooks:15:in `<main>' 

我app.rb如下复制:

require 'rubygems' 
gem 'activerecord' 

require 'sqlite3' 
require 'active_record' 

ActiveRecord::Base.logger = Logger.new(File.open('database.log', 'w')) 
#ActiveRecord::Base.logger = Logger.new(STDERR) 

ActiveRecord::Base.establish_connection(
    :adapter => 'sqlite3', 
    :host => "localhost", 
    :database => 'test6.db' 
) 

class Bill < ActiveRecord::Base 
    belongs_to :admin 
end 


class Admin < ActiveRecord::Base 
    validates :email, presence: true, uniqueness: true 
    validates :name, presence: true 
    has_many :bills 
end 

我的Rake文件如下复制:

# Rakefile 

require './app' 
require 'sinatra' 
require 'active_record' 
#require 'rake' 

注意:我不是使用Rails - 我使用西纳特拉与ActiveRecord的

回答

1

您可以使用sinatra-activerecord代替的ActiveRecord“,并进行小的改动像下面 -

Gemfile

source 'https://rubygems.org' 
gem "sinatra" 
gem "pg" 
gem "activerecord" 
gem "sinatra-activerecord" 

rakefile.rb

require "./app" 
require "sinatra/activerecord/rake" 

This should work

+0

I alre ady在我的gemfile中有sinatra-activerecord - 我在Rakefile中添加了sinatra/activerecord/rake并且它工作正常。感谢毗湿奴 – user3813256