2015-07-09 51 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」就是一個例子回購,以幫助您開始。