仮想環境をパソコンに構築してRuby On Rails でブログを作った時の話4
はい、待望の回がやってまいりました。いよいよブログ作成開始!!の回ですね。
では早速本編へ。
【アプリ作成】
mkdir -p app/samurai/blog
cd app/samurai/blog
bundle init
sed -i 's/# gem "rails"/gem "rails","~>5.1.0"/g'
Gemfile
bundle install --path vendor/bundler
bundle exec rails new . -d mysql
sed -i "s/# gem 'therubyracer'/gem 'the ruby racer'/g" Gemfile
bundle install
【railsアプリからMySQLへ接続】
https://qiita.com/fuku_tech/items/a380ebb1fd156c14c25b
sudo systemctl start mysqld.service
sudo systemctl start httpd.service
http://192.168.33.10/phpmyadmin→phpmyadminは不明なのであきらめる
cmdでmysqlにログイン:mysql -u root -p
ぶっちゃけ全てを理解しているかと言われればそんなことはない。。
【blogのひな形を作る】
・routes.rb
root "blogs#index"
resources :blogs
⇒7つのアクションができる(index,new,create,show,edit,update,destory)
これ以降のコードはbitbucketに記載。要望があれば公開してもいいけど、要望もないだろうし公開の予定はないです。
【newアクションがうまく行かなかった】
コントローラ名とモデル名一緒にする必要あり?
Mypostモデルを削除してBlogモデルを作り直した
・rails d model mypost
<エラー :アプリ名とモデル名は同じには出来ない>
・アプリ名変更 https://qiita.com/ryoya-s/items/66e426f1a0dd5d87cd6f
・モデル作り直し
rails g model blog
マイグレーションファイルにて
t.string :title
t.string :category
t.text :text
t.timestamps
rake db:migrate
それに伴い、blogs_controllerや各htmlを修正
@myposts = Mypst.all⇒@blogs = Blog.all
【写真アップロード】
https://qiita.com/k19911848/items/a082cc4e0c0103f935b1
https://workabroad.jp/tech/1118
・ImageMagickをインストール rootアカウントで
/bin/yum -y install libjpeg-devel libpng-devel
/bin/yumyum -y install ImageMagick ImageMagick-devel
・gemfile
gem 'carrierwave'
gem 'rmagick'
bundle install
・アップローダを作成
rails g uploader first_image
・マイグレーションファイル作成 カラム作成
rails g migration addColumnsToBlogs first_image:string second_image: string third_image:string
rake db:migrate
・Blogモデルを編集
mount_uploader :first_image, FirstImageUploader
・Blogコントローラを編集
def blog_params
params.require(:blog).permit(:first_image, :first_image_cache)
end
・image_uploader.rbの設定
省略 https://workabroad.jp/tech/1118
・new.html.erb,edit
<%= f.label :写真1 %>
<%= image_tag @blog.first_image.thumb.url if @blog.first_image? %>
<%= f.file_field :first_image %>
<%= f.hidden_field :first_image_cache %>
・show.html.erb
<%= image_tag @blog.first_image.thumb.url if @blog.first_image? %>
【herokuにあげる】
heroku login --interactive
git add -A
git commit -m ""
git push heroku master
heroku run rails db:migrate(db関係の変更をした場合)
はい、これで終わり。そうだね、エラーが少ない。これは環境構築の時に大量のエラーと戦争してきたから少なく感じるのもあると思う。コードを書くのよりも環境設定が大変でプログラミングを始めた人が挫折してしまうのもわかるよね。環境構築はつまらないし笑
ところがだよ、最後に待っていたんだよ。ショッキングな出来事が。
【エラー:herokuにプッシュしたアプリで画像の投稿をすると数時間後に投稿した写真が消える】
原因は一定時間が経つと、Heroku上のレポジトリ(Dyno)が最後のコミットの状態にリセットされるかららしいです、、対処法は、
①画僧をDBに保存するときバイナリーデータとして保存する。
このあたりを参考にやる。
https://qiita.com/KenAra/items/855999d0cee4d2d338b0
②s3などクラウドストレージを使う
https://qiita.com/KenAra/items/855999d0cee4d2d338b0
もともと無料で完成させる事をコンセプトにしているので②は論外。ここで①について検証する。するとこんな記事が、、、
https://teratail.com/questions/81233
まぁ要するにおすすめはしないよね、との事。
ここで僕の当初の目的を思い出す。ruby on railsを使って何か形のあるものを残す。うん、達成されたな。ということで画像の投稿はあきらめました。というか、自作ブログを運営することをあきらめました。なぜか。このブログができたとき友人に公開した。どうだと。そしたら、確かにすごい、だけどめっちゃつながるまで遅い、と言われた。間違いない。これが無料枠の限界なのかなぁと思ったんだよね。これがもし結構な速さですいすい動いてくれるなら画像の投稿も頑張ってもよかったんだけどね。。。
ということで僕のブログ作成は一段落しました。中途半端な終わりかもしれないけど個人的には大満足。次回がこのシリーズの最終回です。このブログ経験を通して僕が感じたことを残していきたいと思います。