- 0.1. 【rails】gemの処理にbinding.pryを差し込む方法
- 0.2. AWSでアプリをデプロイする方法(手動デプロイ編)
- 0.3. Rails mimemagicエラー
- 0.4. Rails 6.1.3にアップグレードした後に「undefined method `service_name’ 」のエラーが発生する
- 0.5. Shopify の scope 再認証がどうにもうまく行かない時 (Ruby on Rails)
- 0.6. Rails Server起動後に、Blocked host: ホスト名.vfs.cloud9.ap-northeast-1.amazonaws.comと表示されるときの対処法
- 1. 症状
- 2. 解決方法
- 2.1. paizaをやり始めのRuby初学者がググりながら学んだ色々な記述方法
- 2.2. Roo / Ruby on Rails Gem 日本語訳(2)
- 2.3. Rails のトランザクションとコールバックについて
- 2.4. Railsチュートリアルの学習をはじめました
- 2.5. モダンな監視ツールSentryをRailsで使ってみた
- 2.6. MVCに立ち戻って解決
- 2.7. Ruby on Railsのローカル環境構築
- 2.8. presenceメソッドってもうちょっとなんとかならないのかな
- 2.9. Ruby on Railsでの閉じタグ忘れエラー発生
- 2.10. 【ALB unicorn nginx】急に502 Bad Gatewayが出て直らないとき
- 2.11. 【rails】modalを出現させてデータの「更新」をajaxで実装する方法
- 2.12. テスト機能は大事
- 3. 自動テストをしかっりコツコツと書くメリット
【rails】gemの処理にbinding.pryを差し込む方法
# なにこれ
railsで開発をしていると、
「このgemの処理ってどうなってるんだろう?」
と考えることがあると思います。そこで、今回はgemのコードの中に
`binding.pry`を置く方法を紹介します!# やり方
## 環境変数BUNDLER_EDITORを定義
今回はvimで検証します。
“`ターミナル.
$ export BUNDLER_EDITOR=vim// 確認
$ echo $BUNDLER_EDITOR
#=> vim
“`## bundle openで開きたいgemを開く
“`
bundle open// 例
bundle open rails
“`無事gemの中に入ることが出来ました!
ディレクトリを移動して、好きなファイルに`binding.pry`を置きまくりましょう。“`gemの中.
../
./
README.md
“`#### t
AWSでアプリをデプロイする方法(手動デプロイ編)
# データベース作成後、Railsを使用した手動デプロイの方法を紹介します!(学習記録):mount_fuji:
#### EC2上でRailsを起動するための設定
まず、アプリケーションのコードをGitHubからEC2サーバへクローンします。デプロイできるIPアドレスを持ったEC2サーバー上でアプリケーションを動かすためです。
EC2インスタンスからGitHubにアクセスするためには、作成したEC2インスタンスのssh公開鍵をGitHubに登録する必要があります。
ssh鍵をGitHubに登録すると、GitHubはそれを認証に利用し、コードのクローンを許可してくれるようになります。#### EC2サーバーのssh鍵のペアを作成し、GitHubにssh鍵を登録しましょう
“`
# EC2内で実行
[ec2-user@<自身のElasticIP> ~]$ ssh-keygen -t rsa -b 4096
# 途中で「passphrase」など3段階ほど入力を求められることがありますが、すべて何も入力せずにEnterキーを押して進んでください。
“`#### ssh公開鍵
Rails mimemagicエラー
mimemagicエラーが発生。詳しくは以下から。
https://qiita.com/Esfahan/items/45c0cdeb29509b7ec1c5#rails-525-6036-6131%E3%81%AFmimemagic%E3%81%AB%E4%BE%9D%E5%AD%98%E3%81%97%E3%81%AA%E3%81%8F%E3%81%AA%E3%81%A3%E3%81%9F327%E8%BF%BD%E8%A8%98
docker-compose buildをしたら、以下のエラーが発生。
私がしているのは、dockerとrailsでアプリを作っている最中。##今回のエラー
“`
#13 0.732 Fetching https://github.com/manfe/refile.git
#13 2.642 Fetching gem metadata from https://rubygems.org/…………
#13 4.718 Resolving dependencies…
#13 5.021 Your bundle is locked
Rails 6.1.3にアップグレードした後に「undefined method `service_name’ 」のエラーが発生する
# 背景
https://github.com/rails/rails/issues/41750
上記のissueがあるので、プロジェクトのRailsバージョンを6.0.3から6.1.3にアップグレードする必要があります。“`
bundle update rails
“`bundleは無事に完成しました。
ただし、サーバーを再起動した後は`image_tag`の部分は「undefined method `service_name’ 」のエラーが発生しました。# 原因
https://edgeguides.rubyonrails.org/6_1_release_notes.html#active-storage-notable-changes
>ActiveStorage::Blob#service_name column was added. It is required that a migration is run after the upgrade. Run bin/rails app:update to generate that migration.R
Shopify の scope 再認証がどうにもうまく行かない時 (Ruby on Rails)
[omniauth-shopify-oauth2](https://github.com/Shopify/omniauth-shopify-oauth2) gem の [この issue](https://github.com/Shopify/omniauth-shopify-oauth2/issues/92) に回答があるように、シンプルに `/login` にアクセスする事で再認証画面に遷移されました。
## 注意点
– `/login` にアクセスする前に `config/initializers/shopify_app.rb` 等で定義されている scope をまずは更新する必要があります。(サーバーの再起動も忘れずに)
– 既に認証されている scope と新しい scope に差分がある場合のみ再認証画面に遷移されます。## References
– [How to update scopes and then allow user to re-auth? | omniauth-shopify-oauth2](https://github.com/Shopify/om
Rails Server起動後に、Blocked host: ホスト名.vfs.cloud9.ap-northeast-1.amazonaws.comと表示されるときの対処法
症状
cloud9上でRailsをダウンロードして、諸々updateしてrails Serverを起動したところ下記のようなエラーが表示されてしまいました。
Railsチュートリアルを参考にセットアップをしました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/927880/f08fbe7c-0723-1b1d-f4ca-3c14693712fd.png)
解決方法
dev環境のconfigにcloud9へのアクセスを許可するコードを書いたら、正常に動作するようになりました。
“`ruby:config/environments/development.rb
Rails.application.configure do
.
.
.
# Cloud9 への接続を許可する
config.hosts.clear
end
“`
![image.png](https://qiita-image-store.s3.ap-north
paizaをやり始めのRuby初学者がググりながら学んだ色々な記述方法
#「動くからいいや」ではなく「可読性」「メンテナンスのしやすさ」が大事
Railsに頼り過ぎていて今までRubyの基本的な文法すら満足に扱っていなかったのだなと痛感させられました。
知っている人からすれば当たり前かもしれませんが、温かい目で見守ってください!
また、もっとこうした方がより実践的だという意見があればコメントで教えていただけると嬉しいです。##埋め込みRuby
文字列の中にRubyの式や変数を埋め込める。
“`
name = “太郎”
puts “こんにちわ!私は#{name}です!”=> “こんにちわ!私は太郎です!”
“`ダブルクォーテーション(””)じゃないとRubyが展開されないので注意です。
##後置if
例えば以下のようなfalse側がいらないif文がある時
“`
if true
“trueでhoge”
end=> “trueでhoge”
“`こういう時は以下のように一行で書くことができます
“`
hoge = “trueでhoge” if true
puts hoge=> “trueでhoge”
“`
Roo / Ruby on Rails Gem 日本語訳(2)
**今回実務で扱ったRubyonRailのGem`Roo`についてまとめました。
ソースコード: https://github.com/roo-rb/roo**
**前回の投稿の続きです
→[Roo / Ruby on Rails Gem 日本語訳(1)](https://qiita.com/tako_tako/items/6d2aaaa35ccc21fb478e)**
# 投稿動機
**→実務で扱ったGemを復習する
→Githubなどのソースコードにビビらないようになりたい
→将来実務で英語を使いたいので、そのポートフォリオの一環として作成したい****また、最後にも記載しますが著作権に関して疎いので、この記事が著作権違反にあたらないと認識して投稿しています。
なので、著作権を侵害するつもりもありませんし、もし著作権違反になるようであればすぐにこの投稿を削除します。****I will mention at the end, I am not familiar with copyright, so I am posting this article recognizing
Rails のトランザクションとコールバックについて
# はじめに
Rails のトランザクションとコールバック処理についてまとめました。
誤り等、ご指摘ございましたらコメントいただけますと幸いです :pray:# トランザクションとは
トランザクションとは複数の処理においてデータの整合性を保つための機能であり、DBに対するデータ更新の単位とも言えます。
例えば PostgreSQL の場合、`BEGIN TRANSACTION` でトランザクションの開始を宣言し、`COMMIT`(コミット) においてそのトランザクションに含まれていた処理をDBに反映させます。コミットを行うまではトランザクション内の変更を破棄して元の状態に戻すこと(ロールバック)ができます。(一度コミットをしてしまったら基本的に戻すことができないので、SQL的にコミットは緊張感を伴う処理になります。)
複数の処理を実行する際に、「Aの処理は成功したがBの処理は失敗した」みたいな状態がまずい場合( 例:銀行の出金処理と入金処理)、トランザクション内でこの一連の処理を行い一方の処理が失敗した時点でロールバックすることにより、データの整合性をとることができます。#
Railsチュートリアルの学習をはじめました
#はじめに
2020年の11月からプログラミング学習を始め、2021年3月27日現在で以下の学習を終えました
###HTML/CSS/JavaScript
– スラスラわかるHTML&CSSのきほん(#書籍)
– HTML&CSSコース中級編(#Progate)
– JavaScriptコース(#Progate)
– テトリスアプリの作成(#Youtube動画を見ながら)###Ruby/Ruby on Rails
– Rubyコース(#Progate)
– Ruby on Railsコース(#Progate)###SQL
– SQLコース(#Progate)###Linux
– 1週間でLIPCの基礎が学べる本(#書籍)
– LIPC LEVEL1,2の学習(#ping-t)###資格取得
– LPIC LEVEL2
– 基本情報技術者試験(選択問題のマーク忘れにより点数入らず…多分落ちてしまいました)#学習を進めて思ったこと
これまでTwitterやブログなどでのアウトプットをまったく行わずに学習を進めてきましたが、
今後はしっかりと学習内容をQiit
モダンな監視ツールSentryをRailsで使ってみた
# はじめに
Rails環境でSentryを導入したので導入手順をまとめました。以前までは`sentry-raven`というGemが使用されていましたが、こちらがメンテナンスモードに入ってしまい、
現在は`sentry-rails`、`sentry-ruby`への移行が推奨されています。
– [getsentry/sentry-ruby](https://github.com/getsentry/sentry-ruby)
– [Migration Guide](https://docs.sentry.io/platforms/ruby/migration/)この記事では`sentry-rails`、`sentry-ruby`を使用し進めます。
## Sentryとは?
https://docs.sentry.io/platforms/ruby/guides/rails/
Webアプリケーションで起きたエラー等をロギングできるサービスです。
導入も簡単でUI/UXがGoodなダッシュボードも使えます:dancer:![スクリーンショット 2021-03-27 11.2
MVCに立ち戻って解決
解決にこれほど時間を費やしたことはなかった。
だか自分がいかに勉強不足かわかった。twitter風のアプリでコメント機能を実装中だった。
(1)最初のエラーメッセージはこのメッセージでした
![20210327-085100.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/960935/8a946e04-c0b3-2d8f-2751-2192d5ede204.png)
(2)投稿したメッセージに対してのコメントなので
必ず投稿内容があり、そのコメントであった。
ここからアソシエーションは必須。
ルーティングについてもネストを行っていました。routes.rb
“`rb
resources :prototypes do
resources :comments, only: :create
end
“`comment.rb
“`rb
class Comment < ApplicationRecord belongs_to :prototype bel
Ruby on Railsのローカル環境構築
今までRailsアプリの開発環境は全部Dockerで作ってたけど、雑に作って挙動確認したい時とかにいちいちDockerで環境作るの面倒なので、ローカルにもRailsの環境を作っておく。
## 作るもの
– DBはsqlite
– Rubyのバージョンはrbenvで管理## 前提
– macOS Catalina 10.15.7
– Homebrewが使える
– シェルはzsh## rbenvをインストール&セットアップ
“`zsh
$ brew install rbenv ruby-build
$ rbenv -v
rbenv 1.1.2
$ vim ~/.zshrc
“`
“`rb:.zshrc
eval “$(rbenv init -)”
“`
“`zsh
$ source ~/.zshrc
“`## Rubyをインストール
“`zsh
$ rbenv install –list # インストールすることが可能なRubyのバージョン一覧が表示される
$ rbenv install 2.7.2 # Ruby 2.7.2をインストール
$ rb
presenceメソッドってもうちょっとなんとかならないのかな
railsのpresenceメソッドって
“`rb
hoge = nil
fuga = hoge.presence || “empty”
“`って感じで`||`がつくオプショナルな形なんだから
“`rb
presence_or(value_in_blank)
“`
みたいに||もラップしたメソッド化されていれば嬉しいな実際は
“`rb
hoge = nil
fuga = hoge || “empty”
“`の書き方でもやってること同じだけど、hogeがnullableな場合を考慮して`presence`の記法が生まれたと思っている(`hoge.present? ? hoge : “empty”`が冗長だから)。
だったらnilの対処時に多くの場合で`||`でデフォルト値を入れるんだから、考慮してほしかったな。一応例外があるけど
“`rb
hoge = “”fuga = hoge.presence || “empty” # “empty”
fuga = hoge || “empty” # “”
“`どういう経緯で今の形式になっているかも知ら
Ruby on Railsでの閉じタグ忘れエラー発生
今までに見たことないエラーのため少し焦りました。
通常Ruby on Railsのエラーであれば
![20210324-202013.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/960935/eada11f2-28ee-77c2-bdac-b4ff6bc9a6a2.png)
こんな感じですが、
今回見たのはこれ
![20210327-171227.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/960935/259c074a-3b44-53bd-9017-0b599985595e.png)
単なる閉じタグ忘れエラーでしたが焦りました。
【ALB unicorn nginx】急に502 Bad Gatewayが出て直らないとき
## Bad Gatewayの原因
そもそも**Bad Gateway***はどういったときに出るのか調べてみると、
nginxにリクエストは届いているが、unicornとの連携がうまくいっていない場合に起きるようです。多くの場合はunicorn socketのパス記入ミスなどが原因ですが、自分はかなりここでハマってしまったので解決策をまとめました。
## 構成
ALB + nginx + unicornで構成し、webアプリケーションはRuby On Rails を使用。インフラはAWSでVPC内に一つのEC2を使っています。
## 1. エラーログの表示
まずはnignxでエラーを表示しましょう。自作のconfファイルを使用していない場合であれば/var/log/nginx/error.logに格納されているのでそちらを表示。
“`/nginx/nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log; ←こちら
pid /run/nginx.pid;
【rails】modalを出現させてデータの「更新」をajaxで実装する方法
##自己紹介
rails学習約4ヵ月です。
bootstrapでmodalウィンドウを出現させ、編集⇒更新をajax処理で行いたいと思いましたがなかなかうまくいかずに悩んだので備忘録として記録しておきます。
##やりたい事
1.左上の「・・・」を押すとモーダルが出現。
![スクリーンショット (88).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1245620/f94bd714-c75e-212a-a68a-df6852e78fde.png)
2.続けて「編集」を押すとデータが編集画面のモーダルが出現
![スクリーンショット (89).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1245620/df68382c-b474-4b17-5e3c-35a4f91f77ae.png)
3.「更新」を押すとmodalがすべて閉じて、変更した部分だけが変わるようになる
![スクリーンショット (90).png](https://
テスト機能は大事
自動テストをしかっりコツコツと書くメリット
1 総合的にテスト全体にかかるコストの削減になる
2 サービスの機能の追加時リスクが少なくなる
はじめてのCircleCI(Docker+Rails+MySQL)でハマったお話
Railsアプリがある程度できてCircleCIを導入しようとしたらうまくいかなかったのでメモ。
CircleCIをざっくり理解して使うようになるために、簡単な手順もメモします。## 1. 前置き
### 1-1. 動作環境
| | version |
|:———-:|:————:|
| MacOS | Mojave |
| Ruby | 2.5.7 |
| Rails | 5.1.7 |
| MySQL | 5.7 |
| CircleCI | 2 |### 1-2. この記事を読んで欲しい人
下記の人の助けになれたらと思って書いた記事です。– CircleCIは知ってる。けど導入するのがちょっと億劫(怖い)
– いろんな記事があるけどどれが良い?### 1-3. 初めてCircleCIを使うときに知っておきたかったこと(まとめ)
一番知っておきたかったことは3つです。– CircleCI使うのが初
【Ruby】writeメソッドの使い方
#プログラミング勉強日記
2021年3月27日#writeメソッドとは
Rubyで指定したファイルを読み込むときに使うメソッド。指定したファイルがない場合には新しくファイルを作成して書き込むが、すでにファイルがあった場合は内容がすべて上書きされる。“`ruby:書き方
File.write(“ファイル名”,”書き込む内容”)
“`#サンプルプログラム
“`ruby:sample.rb
# sample.txtのファイルを作成し、「Hello World」を書き込む
File.write(“sample.txt”, “Hello World”)
#文字を書き込んだファイルを開き変数に代入
file = File.open(“sample.txt”)
#コンソールにファイルに書かれた内容を表示する
puts file.read
file.close #ファイルを閉じる
“`#参考文献
[Rubyのwriteメソッドの使い方を現役エンジニアが解説【初心者向け】](https://techacademy.jp/magazine/50292)
[ファイル