rails generateする時sqlite3の指定で躓いた話
環境
- cloud9
- Rails 5.2.2
controllerをgenerateしたかった
controlleを作ろうとrails generate。
$ rails generate controller search books
いやー、railsはこれがあるから良いですねー。
昔やってたStrutsなんて用意するファイルを全部手で作ってたから効率がぜんぜん違うわー。
さてさて、ズラズラっと出てきたから出来てー…
/usr/local/rvm/rubies/ruby-2.4.1/lib/ruby/gems/2.4.0/gems/bundler-1.16.5/lib/bundler/rubygems_integration.rb:408:in `block (2 levels) in replace_gem': Error loading the 'sqlite3' Active Record adapter. Missing a gem it depends on? can't activate sqlite3 (~> 1.3.6), already activated sqlite3-1.4.0. Make sure all dependencies are added to Gemfile. (LoadError)
:
(以下スタックトレース)
:
ないじゃん。
おもくそエラーじゃん。
答えはエラーに書いてある
ちゃんとしたフレームワークならちゃんとしたエラー文が出力されるので、まずはエラー文を眺めてみましょう。
すると、最後にこんな記載があるわけですな。
Make sure all dependencies are added to Gemfile.
英語が得意とは言えない人(=ぼく)でも「dependencies」を「Gemfile」でなんかしなきゃいけないことはなんとなーくわかりますね。
じゃあその直前に何が書いてあるかというと、
Missing a gem it depends on? can't activate sqlite3 (~> 1.3.6), already activated sqlite3-1.4.0.
ざっくり和訳すると、「Genfileのsqlite3周りちゃんと見ろ」。
わざわざバージョン指定まで入ってるので、Gemfileにコピペしときましょう。
現在のsqlite3をコメントアウトして、その下にコピってペーします。
# Use sqlite3 as the database for Active Record
# gem 'sqlite3'
gem 'sqlite3', '~> 1.3.6'
保存したのを確認して、rails generateを再実行。
$ rails generate controller search books
Running via Spring preloader in process 12947
create app/controllers/search_controller.rb
route get 'search/books'
invoke erb
create app/views/search
create app/views/search/books.html.erb
invoke test_unit
create test/controllers/search_controller_test.rb
invoke helper
create app/helpers/search_helper.rb
invoke test_unit
invoke assets
invoke coffee
create app/assets/javascripts/search.coffee
invoke scss
今度はちゃんと動きました。めでたしめでたし。
参考資料
Author And Source
この問題について(rails generateする時sqlite3の指定で躓いた話), 我々は、より多くの情報をここで見つけました https://qiita.com/ginger893/items/acf143e310e2026e6cee著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .