[Cloud9]Sinatraトラブルシューティング

はじめに

この文書の背景などをこちらに記してあります。参考にされてください。

2019/09/02 現在の情報

対象

Sinatraを利用する際に以下の2つのエラーで悩まされている方への救済です。
  • bundle exec rake db:migrate で「cannot load such file -- sinatra/activerecord/rake/activerecord_6」とエラーが出る場合
  • bundle exec rake db:migrate で 「Your version of SQLite (3.7.17) is too old. Active Record supports SQLite >= 3.8」とエラーが出る場合

追加として一緒に発生する以下のエラーについても記しました。

  • bundle exec rake db:migrate で「ArgumentError: Unknown migration version "6.0"; expected one of "4.2", "5.0", "5.1", "5.2”」とエラーが出る場合

対応


OSをAmazonLinuxから変更せずに利用するgemのバージョンを指定する場合: ActiveRecordのバージョンをあえて下げる方法です
Gemfileの内容に以下のような6行目の情報を追加してください。利用するActiveRecordのバージョンを指定します。

source 'http://rubygems.org'

gem 'sinatra'
gem 'sinatra-reloader'
gem "sinatra-activerecord"
gem 'activerecord', '~> 5.2.0'
gem 'sqlite3'
gem "rake"

上記を保存したら、 bundle update をしましょう。10行目、11行目、12行目のように、 5.2系のActiveXxxがインストールされるはずです。Using activexxx 5.2.x と出る方もいるかもしれません。それも大丈夫です。

$ bundle update
Fetching gem metadata from http://rubygems.org/..........
Resolving dependencies...
Using rake 12.3.3
Using concurrent-ruby 1.1.5
Using i18n 1.6.0
Using minitest 5.11.3
Using thread_safe 0.3.6
Using tzinfo 1.2.5
Fetching activesupport 5.2.3 (was 6.0.0)
Installing activesupport 5.2.3 (was 6.0.0)
Fetching activemodel 5.2.3 (was 6.0.0)
Installing activemodel 5.2.3 (was 6.0.0)
Fetching arel 9.0.0
Installing arel 9.0.0
Fetching activerecord 5.2.3 (was 6.0.0)
Installing activerecord 5.2.3 (was 6.0.0)
Using backports 3.15.0
Using bundler 1.17.3
Using multi_json 1.13.1
Using mustermann 1.0.3