尝试在Sinatra中运行迁移,但无法加载Sinatra app

时间:2015-07-09 21:01:46

标签: ruby activerecord sinatra

我希望为一款名为" Sinatra_active_record_start"的Sinatra应用程序运行迁移。但无法正确设置我的设置。

当我运行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"

我的Rakefile是:

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"

我知道有一些裁员,但在这一点上,我只是试图插入并制作我在互联网上找到的工作。

1 个答案:

答案 0 :(得分:2)

首先,看起来您不需要数据库的适配器。添加一个,比如

gem "sqlite3"

到您的Gemfile,应该修复它。

其次,sinatra/activerecord默认情况下在名为“db / migrate”的目录中创建迁移。这就是您的迁移应该存在的地方,而不是根目录。

将迁移移至那里并删除

require "sinatra_active_record_start"
来自你的Rakefile的

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

执行这些步骤应该会使您的迁移运行,但您应该重命名该文件以遵循ActiveRecord约定。运行

rake db:create_migration NAME='sinatra_active_record_start'

创建一个带时间戳的新文件。

Sinatra Active Record Starter Kit”是一个帮助您入门的示例回购。