2015-07-09 69 views
1

我期待运行名为“sinatra_active_record_start”一西纳特拉的应用程序迁移,但不能让我的设置正确。试图在西纳特拉运行迁移,但不能加载西纳特拉应用

当我运行bundle exec rake -T我得到:

LoadError: cannot load such file -- sinatra_active_record_start 

/Users/jasonnappy/ga_wdi/exisiting_resources/wdi_london/resources/materials/local/06-server-applications/ruby/sinatra/active-record/sinatra_active_record_start/Rakefile:1:in `require' 

同样的当我运行为:

bundle exec rake db:create_migration first_migration 

我的Gemfile是:

source "https://rubygems.org" 
gem "sinatra" 
gem "activerecord" 
gem "sinatra-activerecord" 
gem "rake" 
gem "thin" 

我的Rake文件是:

require "sinatra_active_record_start" 
require "sinatra/activerecord/rake" 


namespace :db do 
    desc "Migrate the database" 
    task(:migrate => :environment) do 
    ActiveRecord::Base.logger = Logger.new(STDOUT) 
    ActiveRecord::Migration.verbose = true 
    ActiveRecord::Migrator.migrate("db/migrate") 
    end 
end 

app.rb顶部是:

require "bundler/setup" 
require "sinatra" 
require "activerecord" 
require "sinatra/activerecord" 

我知道有一些裁员,但在这一点上,我只是想插上,使一些工作,我在互联网上找到。

回答

2

首先,它看起来并不像你需要为你的数据库的适配器。添加一个,如

gem "sqlite3" 

你的Gemfile,应该修复这个问题。

其次,sinatra/activerecord在默认情况下,所谓的“DB /迁移”目录下创建迁移。这就是你的迁移应该存在的地方,而不是根目录。

有移动迁移,并从您的Rake文件删除

require "sinatra_active_record_start" 

。这是造成直接错误的代码。您不需要在Rakefile中要求每次迁移。

按照这些步骤应该让你的迁移运行,但你应该重命名文件遵循ActiveRecord的约定。运行

rake db:create_migration NAME='sinatra_active_record_start' 

使用时间戳创建一个新的。

Sinatra Active Record Starter Kit”就是一个例子回购,以帮助您开始。