【问题标题】:Trying to run migrations in Sinatra but can't load Sinatra app尝试在 Sinatra 中运行迁移但无法加载 Sinatra 应用程序
【发布时间】:2015-09-28 11:00:29
【问题描述】:

我希望为名为“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"

我知道有一些冗余,但在这一点上,我只是想插入并制作一些我在互联网上找到的东西。

【问题讨论】:

    标签: ruby activerecord sinatra


    【解决方案1】:

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

    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”是一个示例代码库,可帮助您入门。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-10
      • 1970-01-01
      • 1970-01-01
      • 2013-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-10
      相关资源
      最近更新 更多