前書き
https://notodoo.herokuapp.com/
今回、NoTodoというwebアプリを作りました。Todoリストを作って「やることが多すぎる!」と感じたことはありませんか?
しかし逆にやらなくてもいいことも多くないですか
無駄なことを減らせば本当にやらなければいけないことに時間をさくことができます。
このwebアプリはそんな「しないことリスト」(NoTodo)をつくるためのものです。ツイッターでリストを公開することも出来ます。
##使った技術
rails6
heroku hobbyプラン(freeだとスリープするのがつらい)
ドメインは取得してません。
使ったgem(一部省略してあります)
gem 'rspec-rails'
gem 'factory_bot_rails'
gem 'ridgepole'
gem 'devise'
gem 'omniauth-facebook'
gem 'omniauth-google-oauth2'
gem 'dotenv-rails'
gem 'devise-i18n'
gem 'devise-i18n-views'
gem 'activeadmin'
gem 'rails-i18n'
今回初めて使ったものはrspecとfactory_bot_railsとridgepoleとomniauth-facebookです。
特に今回はridgepoleについて書こうと思います。
##紹介
今回始めてスマホ優先のサイトを作りました。いままではずっとパソコン優先のサイトでした。
↑ログイン前のTopページ TodoではなくNoTodoが目立つようにしました。
登録ページにはSNS認証が実装されています。(facebook認証が調子悪いときがあります。できないときはこのQiitaの記事のコメントにかいてください。)
↑ログイン後のtopページ ずっと表示され続けるページと保存した翌日には非表示になるページがありますがデザインは一緒です。
##ridgepole
使ってみた感想としてはすごく便利っです。migrateファイルをいちいち作らなくてもいいのはすごく楽でスマートです。ただ初めてなので結構つまずいたとこがありました。今回はそのうち2つを説明しようと思います。
###①
create_table :posts do |t|
create_table "posts" do |t|
ちがいです。笑うかもしれませんがマイグレーションからそのままコピーして移すと最初、結構ハマります。できれば文法同じにしてほしかったです(わけがあって変えてるのかもしれない)。
###②
このサイト公開するにあたって最もハマった点です。ふつうherokuで公開するとき最後に
heroku run rails db:migrate
を打つと思うのですがこれをやってしまうと大変です。
heroku run 'bundle exec ridgepole -c config/database.for.heroku.ridgepole.yml -E production -f db/Schemafile --apply'
ホントはこれをやるべきでした。しかしもうDBをリセットしても治りません。他にもやり方があるかもですが僕の場合は一旦アプリを削除してheroku createからやりました。これがわかるまで丸1日かかりました(泣)ちなみにseedをやるときはheroku run rails db:seedでいいんです。
##ridgepoleを使うメリット・デメリット
###メリット
・いちいちmigrateファイルをつく作らなくてもいい。
・ファイル一つで済む。
###デメリット
・コマンドが覚えにくい
bundle exec ridgepole -c config/database.for.heroku.ridgepole.yml -E development -f db/Schemafile --apply
こんな長いのなかなか覚えられません。いちいちコマンドを遡ってやらないといけません。
・エラーが不親切
これはただの僕の技術不足かもですがエラーが分かりづらいと思います。サンプル出せなくてすみません。
##まとめ
いろいろ書きましたがとにかくNoTodoお願いします。