- 0.0.1. 【エラー備忘録・ターミナル原因】vscodeターミナルのbundle installでハマった
- 0.0.2. [Rails]某フリマアプリのカテゴリー機能の実装方法
- 0.0.3. [Rails]Carrierwaveを用いて画像をアップロードする方法
- 0.0.4. 「a duplicate default server for 0.0.0.0:80」という nginx問題の解決方法
- 0.0.5. RailsでMySQL8を使うときに出てくる認証方式エラーのスマートな回避方法
- 0.0.6. [Rails]トップページの背景を動画にしようとしたらハマった
- 0.0.7. 【Rails6】Dockerコンテナを再起動しないとソースコードが反映されない
- 0.0.8. ファイルがあるのにActionController::MissingExactTemplateが出た
- 0.0.9. 【学習記録】herokuへrailsアプリのデプロイ
- 0.0.10. 【Rails】.gitignoreの設定について
- 0.0.11. 【heroku】S3を用いた画像投稿のエラー解決について( Missing required arguments: aws_access_key_id, aws_secret_access_key (ArgumentError))
- 0.0.12. Git clone から 環境構築 して プロジェクトに参加するまでの道のり(全部盛り)
- 0.0.13. MVCモデルってなに???
- 0.0.14. コンテナ上で RSpec 実行中、身に覚えのない MYSQL Lock TimeOut エラー
- 0.0.15. stylesheet_pack_tag と Webpackerの設定 extract_css
- 0.0.16. 開発環境において既存のRailsアプリにDockerを導入する方法(Rails、nginx、mysql)
- 0.0.17. Herokuデプロイ最速手順(MySQL)
- 0.0.18. high_voltageでコントローラー不要のページを作成
- 1. プライバシーポリシー
【エラー備忘録・ターミナル原因】vscodeターミナルのbundle installでハマった
##環境
mac
vscode
rbenv##エラーの状況
vscodeのターミナルで`rails new`したときの`bundle install`でエラーが発生。エラーが表示されたターミナルを閉じたため正確なエラー全文は分からないが以下のようなエラー。“`
ArgumentError: user .rbenv doesn’t existrakeがinstallできない
Gemfileにgem 〇〇がありませんよ
↑〇〇は、Gemfileのrails下にあるgemが表示された。
個別にそのgemをinstallしてbundle installし直すと、
その次にあるgemがないと表示されループに。
“`##原因
以下の写真のようにvscodeのチェックを外せば直った。
# なにこれ
某スクールのカリキュラムでフリマアプリのクローンを作成中です。
そこで、フリマアプリ等によくあるカテゴリー機能を
[ancestry](https://github.com/stefankroes/ancestry)というgemを使って実装したので、
そちらの実装方法を説明用と備忘録として書いておきます。# この記事を読んで分かること
gem ancestryの導入からカテゴリーボックスまでの実装まで
(ブランドと商品サイズは実装してません)# 完成図
# 開発環境
ruby 2.5.1
Rails 5.2.4.3
Sequel Pro(MySQLデータベース)# 前提条件
◎商品出品テーブルが作成済みであること
[Rails]Carrierwaveを用いて画像をアップロードする方法
## carrierwaveとは▼
簡潔に述べると画像をアップロード機能を簡単に追加してくれるRailsのライブラリ(gem)です。
アップロードする画像のサイズを指定したりできます。## 投稿された画像の保存ファイル▼
投稿される画像は、アプリケーションのpublic以下に溜まっていきます。
画像をGitHubで管理する必要が無い場合は、下記のように.gitignoreに記述を追加して
Gitで管理しないようにしましょう。“`
# .gitignoreへ追加
public/uploads/*
“`## carrierwaveの追加方法▼
上から順に実行。“`
# ターミナルで実行
$ brew install imagemagick
“`“`
# Gemfileに追加
gem ‘carrierwave’
gem ‘mini_magick’
“`“`
# ターミナルで実行
$ bundle install
“`“`
# ターミナルで実行
$ rails g uploader image
“`“`
# app/models/
「a duplicate default server for 0.0.0.0:80」という nginx問題の解決方法
同じNGINX サーバーで、二つのサイトを立ち上がりたいところでした。
“`
sugoi.website.net
website.net
“`
上記の二つドメインです。/etc/nginx/sites-available/
上記のフォルダーにコンフィグファイルも設置しました。nginx サーバー再起動したら、以下エラー出ました;
“`
: a duplicate default server for 0.0.0.0:80 in /etc/nginx/sites-enabled/default:2
“`各ドメインのコンフィグファイルです
どうやら、ipv6only=on と default_server は二つ記載されているのはダメでした。
片方で削除してみたら問題なく動けます
“`
server {
server_name sugoi.website.net
#listen 80 default_server; <----問題1 listen 80; #listen [::]:80 default_se
RailsでMySQL8を使うときに出てくる認証方式エラーのスマートな回避方法
RailsでMySQL8を使おうとするとこのようなエラーが発生します。
“`
Plugin caching_sha2_password could not be loaded: /usr/lib/x86_64-linux-gnu/mariadb19/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory
“`ググると原因と対処方法はたくさん出てきますが、どれも大体my.cnfを設定するという内容のものです。
もっとシンプルに対応できないのか?調べたところcommandとして設定を渡せば良いということが分かりました。
docker-composeだとこんな感じです。
[MySQLのDockerHub](https://hub.docker.com/_/mysql)にちゃんと書いてありました。“`
services:
db:
image: mysql
command: –default-authentication-plugi
[Rails]トップページの背景を動画にしようとしたらハマった
トップページの背景を画像から動画にしようと思い実装していたら、ハマりました。
##video_tagを使う
“`ruby:index.html.erb
<%= video_tag("/videos/top-video.mp4", autoplay: :true, loop: :true, muted: :true, class: 'video-content') %>
“`###ひとつひとつ見ていく
“`ruby
“/videos/top-video.mp4”
#/assets/videos/埋め込む動画autoplay: :true
#ページ更新時に自動再生loop: true
#繰り返し再生muted: true
#無音になる railsではこの設定をしないといけないらしいclass: ‘video-content’
#クラス名の指定
“`video_tagは初めて使ったのですが、中身は問題なさそう。
基本的には、これで行けると思っていました。
が、ブラウザでみると全く動画が現れない。拡張子をmp4からwebmにコンバーターで変換して再
【Rails6】Dockerコンテナを再起動しないとソースコードが反映されない
#いちいちコンテナの再起動めんどくさすぎ問題
環境構築は初学者には難しいと言われていたがなんとかDockerでの環境構築に成功で歓喜!!せっかく環境構築したしAPIでも叩いてみるか、、と思いコードを書いていたらリロードしても変更が即時反映されない、、**docker-compose restart**でコンテナ再起動したら変更反映されるけどコード変更のたびにこれするの時間もったいなすぎる、、これの解決策を備忘録として投稿させていただきます。
やり方はめちゃくちゃ簡単です。##環境
– Windows 10 Pro
– Docker for Windows
– Rails 6.0
– Ruby 2.7
– MySQL8.0##方法
Railsのアプリケーションファイルにある“`config/environment/development.rb“`の末尾の方にある“`
config.file_watcher = ActiveSupport::EventedFileUpdateChecker
“`を
“`
config.file_watcher = Activ
ファイルがあるのにActionController::MissingExactTemplateが出た
#ActionController::MissingExactTemplate
“`error
ActionController::MissingExactTemplate (Customer::TopController#index is missing a template for request formats: text/html):
“`こんなエラーが出た。
Railsで開発を行っている中で時々見るエラーだな。
適切なTemplateが見つかりません。というエラー。
まあいつもみたいに対応しようcontrollerのアクションに対して適切なビューがないんだろ…
controllerのアクション名とviewのページ名を確認しよう…
ファイル名でも間違えたのかな…?間違ってないや。
ディレクトリもあってる。
なんでだ?Completed 406 Not Acceptable in 2ms
ん? 406error?406error初めてみたわ
##解決方法
そういえばerbじゃなくてslimファイル使ってたんだ!
Gemfileに以下を追
【学習記録】herokuへrailsアプリのデプロイ
### 詰まった点
– gitのリモートリポジトリの内容がデプロイされる。(解釈、間違いかも)
そのため、変更はリモートのmasterブランチにマージする
– テンプレートリテラルを使用しているとエラーになる。対処法
“`ruby
config/environments/production.rb
config.assets.js_compressor = :uglifier をコメントアウト
もしくは
config.assets.js_compressor = Uglifier.new(harmony: true) とする“`
– デプロイできるが、jsが読み込まれない。“`application.js
//= require jquery を一番前に
【Rails】.gitignoreの設定について
# 経緯
先日、Gitに**commitする際に余計なファイルまで上がって**しまって苦しんだのですが、
すごく便利な.gitignoreの設定方法を教えていただいたので、共有します。# giboってしってるかい?
こいつ、.gitignoreを自動で生成してくれんです。
### インストール
“`
$ brew install gibo
“`
### gitignoreの生成
“`
$ gibo Rails
“`
これだけ。
こんな感じで生成されます。↓↓
>/.bundle
/log/*
/tmp/*
!/log/.keep
!/tmp/.keep
.byebug_history
.DS_Store### https://raw.github.com/github/gitignore/18aa6d83774d514da479d73a4beb864cd4220231/Rails.gitignore
.rbc
capybara-*.html
.rspec
/db/*.sqlite3
/db/*.sqlite3-journal
/db/*.sqlite3-[0-9]*
/pu
【heroku】S3を用いた画像投稿のエラー解決について( Missing required arguments: aws_access_key_id, aws_secret_access_key (ArgumentError))
# 経緯
どうも、プログラミング(3ケ月)初心者です!
今回は、herokuデプロイしたアプリケーションへ画像投稿できるように、s3を導入しました。
この中で2日苦しんだことがあったので、共有したいと思います。ちなみに、作業自体は、以下のサイトを参考に実施しました。
[herokuでS3に画像をアップロード(Rails)](https://qiita.com/4EAE_Learner/items/a8c0513c51e4199d8cdf)※今回紹介するコードは全てターミナル上で実行するものになります。
# エラーについて
### (意気揚々)最初に紹介したページに沿って設定、いざ!!
“`
git push heroku master
“`###(地獄の始まり)あれ、ちゃんと設定したのに…
>remote: Tasks: TOP => environment
remote: (See full trace by running task with –trace)
remote:
remote: !
remote: ! Pre
Git clone から 環境構築 して プロジェクトに参加するまでの道のり(全部盛り)
他の人が作っているプロジェクトに参加したい! と思い、とりあえずGit Cloneするものの、そのあともなかなか骨が折れます。道すがらバージョンあわせ(ここではRuby・MySQLを使用)に見舞われたり、共同作業を想定している場合は、参加される側([記事末尾に記載](#製作者側がすること))もあらかじめしておかなくてはならないことがありますので、その道のりを丸っと記録しておきました。部分的にでも、参考になるところがあればうれしいです。
# Gitリポジトリからcloneする
参加したいGitHubのページにアクセス。「Clone or download」のボタンをクリックするとURLが取得できる。
![スクリーンショット 2020-06-13 12.17.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410392/7f028040-90e8-d3d5-3cc9-6bf7c5a1963d.png)
このURLをコピーして、ターミナルで以下のようにコマンドを打つと、現在いる場所にフォルダが作成される
MVCモデルってなに???
Rails初学者の中には、**MVCモデルって何かよくわからない**という方が意外とたくさんいらっしゃいます。
MVCモデルがわからず、コードをひたすら書くことは果たしてrailsを理解していると言えるでしょうか?いいえ言えません!(反語
そんな方々にMVCモデルに対する苦手意識を無くして欲しいと思い、記事を書いてみました。
ぜひ最後までお付き合いください。#MVCモデルについて
MVCとは、プログラムを構成している中身を**「モデル(Model)」**、**「ビュー(View)」**、**「コントローラ(Controller)」**の3つに分類したものを言います。
それらの頭文字をとってMVCモデルと呼んでいます。
####・モデル(Model)
モデルとは、データを扱う部分です。データベースに対してデータの登録・取得・更新・削除などの処理をします。
####・ビュー(View)
PCの画面(ブラウザ)に表示される部分を言います。実際に入力する処理を行ったりする部分です。HTMLの作り込みはここになります。
####・コントローラ(Controller)
ユーザからの要求に対して
コンテナ上で RSpec 実行中、身に覚えのない MYSQL Lock TimeOut エラー
ポンコツすぎる過去の自分に贈る。
# 原因– 原因 1. コンテナ上でテストを走らせる際、`binding pry`で実行を停止しながらデバッグ等を行っていた。
– 原因 2. あろうことか、**コンテナを停止せず**(binding pry で止まっている状態)、**新しいターミナルを立ち上げ、再度テストを実行。**
– 原因 3. コンテナが乱立し、**同タイミングで複数コンテナがテスト用データの作成等で、 同じDBのテーブルをいじろうとしている状態**に。
イメージ
– その結果、引き起こされたのが
“`ruby
Mysql2::Error::TimeoutError: Lock wait timeout exceeded
`
stylesheet_pack_tag と Webpackerの設定 extract_css
環境: Rails 6.0、Webpacker 4.2
[Rails 6にjQueryとBootstrapを入れる](https://qiita.com/kazutosato/items/d47b7705ee545de4cb1a) で紹介したように、BootstrapのCSSをWebpackerで入れるとします。
“`css:app/javascript/stylesheets/application.scss
@import ‘~bootstrap/scss/bootstrap’;
“`“`javascript:app/javascript/packs/application.js
import ‘bootstrap’;
import ‘../stylesheets/application’;
“`“`erb:app/views/layouts/application.html.erb
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
<%= styleshe
開発環境において既存のRailsアプリにDockerを導入する方法(Rails、nginx、mysql)
Dockerに興味があり、作成したポートフォリオに組み込もうと思い、様々な記事を見ながら導入を試みましたが、かなり苦戦を強いられました。
無事導入することができましたので、今回は既存のRailsアプリにDockerを導入する方法を書いていきたいと思います。# 環境
– Mac OS
– Ruby2.5.7
– Rails5.2.4
– mysql5.7
– nginx1.15.8# 事前準備
– OS上に Docker と docker-compose をインストールしてください。
以下のコマンドを実行して、それぞれ表示されればインストールできています。“`
$ docker -v
Docker version 19.03.8, build afacb8b$ docker-compose -v
docker-compose version 1.25.5, build 8a1c60f6
“`# ファイル構成
ローカルのファイル構成は最終的に以下の通りになります。“`
myapp
|– app
|– bin
|– config
|– c
Herokuデプロイ最速手順(MySQL)
###
ようやくHerokuを使ってデプロイが出来ました。
AWSよりは簡単にデプロイ出来ましたが、少し詰まったところもありましたので、
Herokuへのデプロイ最速手順を備忘録として残します。## 参考にさせていただいたページ
– [RailsアプリをHerokuにデプロイ(MySQL)](https://qiita.com/rainbow___0/items/1789920cf797b5e80a5e)– [Heroku ClearDBにSequel Proから接続する](http://hhmmm.hateblo.jp/entry/2016/02/15/204638)
## 事前準備
– Herokuアカウントを取得しておきましょう
[Heroku公式サイト](https://jp.heroku.com/)
– HerokuでMySQLを使用するためにクレジットカードを登録しておきましょう
(Herokuの右上のユーザー情報から”Account Setting” → “Billing”にてクレジットカードを設定できます)
※ 超過しない限り請求されるこ
high_voltageでコントローラー不要のページを作成
##目的
プライバシーポリシーや利用規約などそれ1枚だけで完結する静的なページを作成したかった。
それだけにコントローラー作るのも……と思っていたらドンピシャの自分でルーティング設定もしなくていい素晴らしいgemを発見。詳細は公式を見れば分かります。内容も短くて分かりやすいです。
https://github.com/thoughtbot/high_voltage##higt_voltage導入
“`ruby:Gemfile
gem high_voltage
“`“`
$ bundle install
“`
ビューを設置。
これで完成。“`erb:app/views/pages/privacy_policy.html.erb
プライバシーポリシー
“`
静的ページのデフォルトのURLは`/pages/○○`であるが、`pages`を付けたくないときは以下のようにファイルを新規作成して設定すればよい。これで`/○○`のURLになる。
“`ruby:config/initializers/high_voltage.rb
HighVolt
HTTPS対応503にハマった
Railsのwebアプリをhttps対応する時に、503のエラーで鬼ハマったので、、、記事にまとめてみました。
参考にしてください。基本以下の記事を参考にしております。
#段取り
AWSのロードバランサー(ALB)を使いました!ルートは以下となります。
①EC2 → ②ロードバランサー(ALB) → ③Route53 → ④クライアント
②のところで、HTTPSにします!
##環境
Rails5
unicorn
nginx
capistrano##AWS
EC2
ロードバランサー(ALB)
ACM
Route53##前提
EC2にデプロイ完了済とします。
デプロイでnginxを使っています。
route53に登録済とします。#やり方
##ACMの登録
ACMを利用して、SSlの証明書を発行します。こちらは以下の記事を参考にしてください!
##ロードバランサー(ALB)の作成
Index name ‘index_foo’ on table ‘bar’ already existsが出たときの対処
# はじめに
railsアプリを作成中にタイトルのようなエラーにエンカウントしたので備忘録として
# Index name ‘index_foo’ on table ‘bar’ already exists
同じ名前のindexがありますよというエラーです。
indexってなんぞやという人はこちらをどうぞ -> [データベースにindexを張る方法](https://qiita.com/seiya1121/items/fb074d727c6f40a55f22)
とりあえずmysqlにログインして状態を確認する
参考記事[rails generate migrationしてエラーが出たときの対処法](https://qiita.com/katsuyuki/items/5ba39293f16f5d6cbb56)“`terminal:terminal
$ mysql -u ユーザ名 -D database名 -p-u ユーザ名指定するオプション
-D 接続先databaseを指定するオプション
-p パスワードを送信するオプション
“`なおデータベース名がわからなく