windows10/heroku/rails6でhello world


とうとう作りたいwebサイトを思いついた

家のPC windowsなので
個人開発はherokuだって聞いたので
仕事でruby書いてるので
そんな環境でwebサイトをつくる

(これは金曜夜に日本酒を飲みながら作りはじめ、書きはじめたサイト作成の記録なので、
酔っ払いが回り道をしながら、転びながら作っていることをご承知おきください。)

VScodeとrailsとgitHub desktopの設定は前やってた

herokuいれた

herokuCLI windows用 いれた

heroku loginしてプロジェクトを作った。

dashboardに作ったプロジェクトが表示されない

  → git pushしてないな

pushした

  →エラーでる。buildpackがどうとか。調べたところherokuでrubyでアプリ作るっていったのにrubyのフォルダ構成になってない(正確にはGemFileがない)からって怒られてるらしい

rails new appしてpush

  →エラーでる。ちゃんと大事なところだけ赤字で怒ってくれる。子曰く、

$ Failed to install gems via Bundler.
$ remote:  !     Detected sqlite3 gem which is not supported on Heroku:
$ remote:  !     https://devcenter.heroku.com/articles/sqlite3

そうですかサポート外ですか。

bundle installの時はエラー出ないのになぜなんだ。
pushする際に行われるinstallでエラーがでる。
sqlite3のバージョン指定がいるとのことなのでGemFileを以下のように設定。

GemFile
gem 'sqlite3', '~> 1.3.13'

ERROR: sqlite3.h is missing

そしてエラー。越えられない。

MySQLにしよう!

こちらに書いてある通りにしてMySQLいれる

終わったらWorkBenchが開くとあるが必要なものが全部ダウンロードできなくてエラーがでるのであきらめた。

MySQLがだめならpostgreだ!!

こちらと、
こちらを参照しつつproductionだけpostgreにしました。testとdevelopmentはsqlite3に戻しました。

GemFile
group :development, :test do
  gem 'sqlite3', '~> 1.3.6'
end
group :production do
  gem 'pg'
end

git push heroku masterできた。

herokuとの連携をgithub経由にしたのだけど、その過程で公開鍵の設定が必要になったのでそれも行ってます。(参照記事

・・・hello worldが遠い(ここですでに4時間ほどが経過している)

heroku run rails db:migrateがエラー

 PG::ConnectionBad: could not connect to server: No such file or directory
 Is the server running locally and accepting
 connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

なるほどSUNDAYじゃねーの(よくわかっていない)

エラー文をそのままぐぐったところアドオンがいるらしい
https://qiita.com/suzuki-x/items/b878723080aea1a673ed

heroku addons:create heroku-postgresql

実食!!

必要とされる作業は終わったので開いてみる。

heroku open

ふぁー
ぐぐって(略)

rootファイルを書かなきゃらしい。
ここまで来てローカルで何も書いてないし動かしてないことに一抹の不安を覚える。

ローカルでrails s

なんかある程度書かないとHello Worldできないっぽいし一回ローカル叩いてみるか、と
おもむろにrails sしてみたところ、また件のsqliteが怒っている。

can not load such file — sqlite3/sqlite3_native

色々やってみてなんとか解決した。
こちらsqlite3のインストールを少し変更した。
soファイル生成までは同じだが、Ruby26だったので、ファイルパスにある2.5は2.6に置換して、そこにsoファイルを置いた。

これの2.5を2.6に修正する
mkdir C:\Ruby25-x64\lib\ruby\gems\2.5.0\gems\sqlite3-1.3.13-x64-mingw32\lib\sqlite3\2.5
copy C:\Ruby25-x64\lib\ruby\gems\2.5.0\gems\sqlite3-1.3.13\lib\sqlite3\sqlite3_native.so C:\Ruby25-x64\lib\ruby\gems\2.5.0\gems\sqlite3-1.3.13-x64-mingw32\lib\sqlite3\2.5

rails s自体は通るようになったが接続すると以下のエラーが出る。

LoadError: Error loading the 'sqlite3' Active Record adapter. 
Missing a gem it depends on? can't activate sqlite3 (~> 1.4), already activated sqlite3-1.3.13-x64-mingw32.
Make sure all dependencies are added to Gemfile.

調べても、GemFileに1.3を指定すればいいとしか出ない。指定してbundle installしなおすも、同じエラー。
自分がちゃんとエラー読めていないのかもしれないが。。。
えっじゃあ逆に1.4にしたらどうなるのと思ってやってみたら通った。

Gemfile
group :development, :test do
  gem 'sqlite3', '~> 1.4'
end

Hello World!(ローカルです)

routes
Rails.application.routes.draw do
  # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
  root 'pages#index'
end

PagesContorollerとviews/pages/index.html.erbを作ってそこに魂を込めて
Hello World!!と打ち込む。

みれた!!!

で、これはherokuで見れるのか?
git heroku push masterを再度行う。

herokuでHello World!!できた!

ででできた・・・!!

イメージはローカルと同じなので省略。
お付き合いいただきありがとうございました。

あとがき

読み返したら、らしいらしいばっか言ってて恥ずかしい。
自己解決もだんだんできるようになってくるのだろうか。

環境構築だけで3日も使った。時間にして8時間くらいだろうか。
もっとお布団の中だけでさくっと開発できるようにしてくださいかしこいひと。

さも一度も失敗しなかったかのようなバージョンもまとめておきたい。
Qiitaの記事を書いたのも初めてなのでマークダウンの使い方とか多分あんまり良くない。

あと酔っ払いだったから色んな記事を拾い読みしていて、最初の方に見たはずの
【初心者向け】railsアプリをherokuを使って確実にデプロイする方法【決定版】にミスったところ全部載ってたし、
これ通りにしていれば、こんなに時間かからなかったよなあと思う。