前提
- AWS Lightsail
- ワードプレス
- GoogleDomain -> Squarespace
解決方法
Search Consoleの「未確認」になっているドメインを選択する
手順がでてくるので、TXTの情報をコピーする。
AWS Lightsail上の「ドメインとDNS」タブを左のメニューから探してクリック。
「レコードの追加」をする
- TXT
- 応答する部分にコピペ
- ホストの部分は「@」のみにする
以上で所有権が確認とれます。
Search Consoleの「未確認」になっているドメインを選択する
手順がでてくるので、TXTの情報をコピーする。
AWS Lightsail上の「ドメインとDNS」タブを左のメニューから探してクリック。
「レコードの追加」をする
以上で所有権が確認とれます。
旅が好きな自分にとって、安く、楽に空港まで着く方法というものは非常に重要である。
最近は渋谷駅あたりに住んでいるので、空港にいくとなると、渋谷が起点となる。
羽田はかなり近く、安くいけるのでよいのだが、成田は別である。
(羽田は京急線で700円ほど, 40分ぐらい)
遠い、遠いのである。
2時間から2時間半の覚悟が必要であり、体力でカバーできるものの
着いたら疲れてたり、帰りは根性が必要になることが多い。
また、そもそも旅費として空港まで2000円かかってしまったりして、往復4000円って高いやないかい、
それなら羽田で乗るわ!ってなりかねない。
そこで探すことにした
今ところ見つけた最適解は、東京駅からバスにのる、である。
1300円でバスで1時間らしい。なんてこった、めっちゃいいじゃないか。
どういうバスなのかはわからないけど、座れるだろうし、これはいい。
しかも1300円は安い。
渋谷から東京駅までが200円ちょいなので、合計で1500円ほど。
電車は安くても1250円ほどなので、差額250円であれば許容できる。
それで座れて荷物ももたなくていいなら、なおさらである。
リッチピーポーには、渋谷駅からリムジンバスもでているようである。
こちらは2500円。
ちょっと高い。
成田エクスプレスなどもあるが、3200円ぐらいらしい。
金があれば、これが最強で1時間ほどでつくようである。
ちょっと渋谷から東京駅は20分ほどはかかりそうであるが、我慢はできそうである。
そのあと1時間は座れて、空港まで行ってくれるならアリである。
1300円でIC決済ならそのまま乗れるらしく、クレジットなら事前に売り場で買うようだ。
なかなか良い方法を見つけられたと思う。
AnyPassに引き続き、こちらでも認証がうまく進まなかったので、ノウハウとして残す
前提として、楽天モバイルの契約タブの中身の状態は以下の記事のスクショと同じ。
https://sakurawi.hateblo.jp/entry/any-pass
認証で利用される
050-3184-0271
に楽天Linkで電話をかける。
その際に、ローチケの「電話認証をする」とタップして立ち上がってくる電話番号とそれに続く8桁の番号をメモしておく。
楽天リンクで通話後、そのまま8桁の数値を入れる。
すると認証が開始されるので、 4桁の番号を電話で伝えられるので、 そのまま4桁、そしてシャープを押す。
すると認証されてアプリに戻るとログインされた状態にできる。
ruby '3.3.0' # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' gem 'rails', '~> 6.1.4.1'
gem 'rails', '7.1.3'
にしていく
$ bundle update rails
無事完了
続けてこちら
bundle exec rails app:update
こんな感じで上書きするか でてきます
$ bundle exec rails app:update conflict config/boot.rb Overwrite /Users/sakurawi/workspace/XXX/config/boot.rb? (enter "h" for help) [Ynaqdhm] y force config/boot.rb exist config conflict config/application.rb
基本上書きでよさそう
config/environments/development.rb
の以下の部分のみ戻した。
config.time_zone = 'Tokyo' config.active_record.default_timezone = :local config.i18n.default_locale = :ja config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}').to_s]
上記は i18nも含んでいる
あと以下も足した
config.load_defaults 7.0
にして動かしてみたら、動く
master.keyがなくしていたので再発行...
credentials.ymlを削除して、
EDITOR=vim rails credentials:edit
を実行
importmapに寄せてみる
bin/bundle add importmap-rails
$ bin/rails importmap:install apply /Users/sakurawi/.gem/gems/importmap-rails-2.0.1/lib/install/install.rb Add Importmap include tags in application layout insert app/views/layouts/application.html.erb Create application.js module as entrypoint create app/javascript/application.js Use vendor/javascript for downloaded pins create vendor/javascript create vendor/javascript/.keep Ensure JavaScript files are in the Sprocket manifest append app/assets/config/manifest.js Configure importmap paths in config/importmap.rb create config/importmap.rb Copying binstub create bin/importmap run bundle install Bundle complete! 27 Gemfile dependencies, 109 gems now installed. Use `bundle info [gemname]` to see where a bundled gem is installed.
jsの読み込みあたりはこの辺で行えそう。
https://zenn.dev/yama525/articles/8537244b477059
で、動くことができた。
app/views/layouts/application.html.erb
の不要なの消せそう
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %> <%= stylesheet_pack_tag "application", "data-turbo-track": "reload" %> <%= javascript_importmap_tags %>
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %> を消して、
<%= stylesheet_link_tag "tailwind", "inter-font", "data-turbo-track": "reload" %>
で対応させる
importmap的に、 アプリトップ配下に 以下の空フォルダが必要っぽい。
jsがうまく読み込まれない。
heroku,HTTP2が対応してないらしく、 importmapでのjsの読み込みができないかも。
ruby --version ruby 2.7.5p203 (2021-11-24 revision f69aeb8314) [arm64-darwin22] $ rails -v Rails 6.1.4.7
さすがに、ということで(herokuもEOLだしサポート対象外。。)
$ rbenv install -l 3.0.6 3.1.4 3.2.2 3.3.0 jruby-9.4.5.0 mruby-3.2.0 picoruby-3.0.0 truffleruby-23.1.1 truffleruby+graalvm-23.1.1
$ rbenv install 3.3.0
$ rbenv local 3.3.0
上記で .ruby-version
が切り替わる。
まずgemfileを変える
gemfileの
ruby '3.3.0'
を書き換え。
bundle update
installではエラー。
Resolving dependencies... nokogiri-1.15.5-arm64-darwin requires ruby version >= 2.7, < 3.3.dev, which is incompatible with the current version, 3.3.0
.
rails server がエラー
ruby/3.3.0/psych/visitors/to_ruby.rb:432:in `visit_Psych_Nodes_Alias': Alias parsing was not enabled. To enable it, pass `aliases: true` to `Psych::load` or `Psych::safe_load`. (Psych::AliasesNotEnabled)
対処
gem "psych", "~> 3.3"
いったんさげた。 yamlの場所も消したりしたけど動かない。うーん。
test部分があるともっと対処が必要、かつ検知できると思われます。
herokuのエラーで何度か storage errorが出ていた。
接続すると、エラー画面になっていて、操作が効かない感じ。
エラーの内容から、おそらく、DBの容量の問題と思う。
けど、中身をcsvでダンプすると100MBほどしかないのだが...
とりあえず、herokuのプラン更新をしようにも、5.7はもうサポートされていないようなので、今のうちにやっておくことにした。punchプランのClearDBでした。
経験値にもなるだろうし、いずれ容量増えたら必要なことなので、やることにした。
brew update brew install mysql
をする。
==> Summary 🍺 /opt/homebrew/Cellar/mysql/8.3.0: 323 files, 312.5MB
とのこと。入ってそう。
ということで、手元で8が起動するか試していく。
$ ps ax | grep mysql 5157 s001 S+ 0:00.00 grep mysql sakurawi@Wi-MacBook-Air: ~/workspace/XXX_APP (master *=) $ mysql --version mysql Ver 14.14 Distrib 5.7.44, for osx10.18 (x86_64) using EditLine wrapper sakurawi@Wi-MacBook-Air: ~/workspace/XXX_APP (master *=) $ mysql --version mysql Ver 14.14 Distrib 5.7.44, for osx10.18 (x86_64) using EditLine wrapper sakurawi@Wi-MacBook-Air: ~/workspace/XXX_APP (master *=) $ brew uninstall mysql@5.7 Uninstalling /opt/homebrew/Cellar/mysql@5.7/5.7.44_1... (321 files, 233.9MB) sakurawi@Wi-MacBook-Air: ~/workspace/XXX_APP (master *=)
消えないので、アンインストールした
$ mysql --version mysql Ver 8.3.0 for macos13.6 on arm64 (Homebrew)
お、よさそう。
$ mysql.server start Starting MySQL SUCCESS!
スタートもできるぽい。
rails serverすると当然動かない。
bundle updateしてみる
rails server する。 お、起動するぞ。
え、ぜんぜんうごくやん。
mysql> select version(); +-----------+ | version() | +-----------+ | 5.7.44 | +-----------+ 1 row in set (0.00 sec)
いや変わってなさそう。
$ mysql.server restart Shutting down MySQL .... SUCCESS! Starting MySQL .... SUCCESS!
リスタートさせてみる
mysql> select version(); +-----------+ | version() | +-----------+ | 8.3.0 | +-----------+ 1 row in set (0.00 sec) mysql>
お、切り替わった。
rails consoleからもみてみる
[1] pry(main)> ActiveRecord::Base.connection.execute('SELECT version()').to_a (0.1ms) SELECT version() => [["8.3.0"]]
いいやん。
sequel Proが見れなくなる。 ググる。
MySQL8.0.x に Sequel Pro で接続する #MySQL - Qiita
なんと、夜版じゃないと8.0がみれないとのこと。 なんじゃそら。
ローカルは秒で動くようになったので、 じゃ、pushしてみる。
というか、mysql 8に対応したアドオンを付け直す。
新しくインスタンスを置くイメージかな。
新しい方のDBのデータみたい。
が、heroku configを叩いても、繋いでいる方がでる。 まあ当然すな。
あ、
$ heroku addons Add-on Plan Price Max Price State ────────────────────────────────── ────── ──────────── ─────────── ─────── cleardb (cleardb-horizontal-00000) punch ~$0.014/hour $9.99/month created └─ as CLEARDB_DATABASE cleardb (cleardb-fitted-999999) punch8 ~$0.014/hour $9.99/month created └─ as CLEARDB_ONYX
でてましたわ。
情報を
heroku config:set DATABASE_URL='mysql2://username:password@hostname/database_name?reconnect=true'
でupdateする
他のdbの環境変数も、向くように変更。
herokuで rails db:createする
D, [2024-02-22T05:06:39.800007 #2] DEBUG -- : (18.1ms) CREATE DATABASE `heroku_bdd258af7170eb8` DEFAULT CHARACTER SET `utf8mb4` Database 'heroku_bdd258af7170eb8' already exists
ActiveRecord::StatementInvalid (Mysql2::Error: Table 'heroku_bdd258af7170eb8.users' doesn't exist):
となるので、migrateする。
無事走る。
動いた!
ローカルにダンプしておいてものをエクスポート、
すぐに本番DBにインポートする
個人アプリなので、以上でよさそう。
ただ、デフォルトの文字コードなどの問題はありそうなので、その辺もチェックをしておく。
異常がなければ、add-onは消してしまってよさそう。
なぜか、 3になっている。
mysql> SHOW VARIABLES LIKE 'auto_increment_increment'; +--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | auto_increment_increment | 3 | +--------------------------+-------+ 1 row in set (0.19 sec)
なおす。
前に10になっていたのは、直接イジってつじつまを勝手にあわせてくれた説。
今回、3じゃないと最後のものと称号したときにおかしいからか。
いや、と思ったけど、デフォっぽいので、放置することにする。
初歩的なkaminariのエラーですが。
ActionView::Template::Error (undefined method
total_pages' for #<User::ActiveRecord_Relation`
でのエラーが indexのメソッドで出ちゃうな、という時。
if params[:user_id] @users = User.where(xxx_user_id: params[:user_id]).page(params[:page]) else @users = User.all.order(id: :desc).page(params[:page]).per(50) end
こういうケースの場合です。
indexで検索すな、ということはあるかもしれませんが、 簡易実装の時はやりたい時が多いはず。
ともあれ、
.per()を忘れると、 total_pages
が呼ばれなくなってしまうので、そこです。
複数件返る想定で考えたら、当たり前でした。