- 1. Pumaが起動しない。Deployできない。その時に真っ先につぶしておきたい可能性
- 2. Railsチュートリアルの2章でつまづいた話
- 3. ポートフォリオ
- 4. フォロー機能の追加方法(Ruby on Rails)
- 5. 【Rails】rack-corsの設定方法
- 6. Railsのscopeとは
- 7. rails heroku上のDBをリセットする
- 8. 解決方法_Webpacker::Manifest::MissingEntryError
- 9. 【RSpec】なぜテストを書くのか?
- 10. 【Rails】 Webpacker::Manifest::MissingEntryError in
- 11. enumerizeのオプション・メソッドまとめ
- 12. Webpacker::Manifest::MissingEntryErrorへの対処法まとめ
- 13. ターミナルでRailsを起動するとPostgreSQLが突然エラーになった。
- 14. 【個人開発】Twitterで映える!ファンレターを交換・シェアして楽しめるサービス『ご縁箱』をリリースしました✧˖°。
- 15. ユニットテストのメソッドのメモ
- 16. Rails 7 + MySQLの環境構築をDocker composeで作る
- 17. strip,chomp,chopメソッド
- 18. RailsのクラスとDDD・クリーンアーキテクチャ概念のマッピング
- 19. scopeとクラスメソッド
- 20. スクラムを友達と回し始めた話(プロローグ)
Pumaが起動しない。Deployできない。その時に真っ先につぶしておきたい可能性
# 概要
– ステージングやプロダクション環境でPumaを起動しようとするとエラーが出て起動しない
– ステージングやプロダクション環境にデプロイしようとするとエラーが出て途中で終了する
– ローカルの開発環境ではエラーなくRailsが起動するこのような状況になった時、様々な原因が考えられます。
デプロイ設定やインフラが疑われますが、真っ先につぶしておきたい可能性があります。**本当にローカルの開発環境ではエラーないの?**
この記事ではその確認方法を紹介します。
# 目次
[バージョン](#バージョン)
[エラー状況](#エラー状況)
[エラー原因](#エラー原因)
[確認方法](#確認方法)
[よくあるエラー](#よくあるエラー)
[最後に](#最後に)# バージョン
Ruby:2.7.3
Rails:6.1.4.4
Puma:5.0
Capistrano:3.16.0# エラー状況
Puma起動時にエラーになる
“`sql
/var/www/rails/application/shared/vendor/bundle/ruby/2.7.0/gems
Railsチュートリアルの2章でつまづいた話
Railsチュートリアルの基礎中の基礎(2章のgit)で躓いたので備忘録としてアップしておきます。
環境
・cloud9
・Rails 5.1.6
・Ruby 2.6.3Railsチュートリアル Rails ver.5.1.6では手順通りにgitの設定をしても100%エラーが出ます。(僕の力量では理由はわかりません)
1のnoteの手順通りに最後まで通した後2のqiitaの通りにするとなぜかはわかりませんがうまくいきます。1 railsチュートリアルでBitbucket、Herokuでつまづいた人が行うべきこと
https://note.com/el93019205/n/n328eac66a2602 Railsチュートリアル 1.4.3 Push時のエラー解決方法
https://qiita.com/kmat/items/3e3b681d4ce5a2877960
ポートフォリオ
#はじめに
ポートフォリオとして作成したWebアプリケーションの紹介記事です。##作成した人
- 独学でRuby on Railsの学習を行いWebアプリの開発を行っています。
- 仕事は建築関係の仕事に就いています。作成したアプリの概要
- 「転売目的の商品の大量購入を防止する」ことを目的に作ったWebアプリケーションです。
- サービス名は「Tenba×Iya」としました。
- 転売屋と転売 嫌からTenba Iya、さらに嫌を×で表してみました。
![キャプチャaa.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/948501/a679e5b5-7b29-aa42-b4a1-bc9668fdbdcc.jpeg)最近、転売による商品の不足、高騰などが問題になっているなと思い、アプリを作成しました。
転売をするためには商品を大量に購入する必要があると考え、一つの商品を大量に購入できないような仕組みとしてアプリを作成しています。ただ、アプリの作成はしましたが、購入する際に手間が増える、
フォロー機能の追加方法(Ruby on Rails)
##今回の課題 “フォロー機能の追加”
Railsでのフォロー機能の追加について難しかった点などを
自分で記事に書いて、頭の中を整理していこうと思います。
間違いなどありましたら、ご教授の程よろしくお願い致します。##開発環境
> ruby 2.6.3
> Rails 5.2.6
> Bootstrap 4.5
> Cloud9##大事なこと
今回はフォローした人とフォローする人
どちらも同じテーブル内に存在するUserです。
多くの人をフォローすることもできるし、多くの人にフォローされることもある状態なので現在は多対多の関係になっています。なので
`1対Nの関係を中間テーブルを用いて関連付ける`事が重要になります。自分自身もまだ完全には理解できていませんが、この記事を書く事で少しでも理解できる様に整理していきます。
##手順
– モデルの作成
– アソシエーション
– メソッド作成
– コントローラー
– ビュー##モデルの作成
まずは`relationship`モデルを作成そしてrelationshipsテーブル内のカラムに
・integer :follow
【Rails】rack-corsの設定方法
## はじめに
本記事は、プログラミング初学者が、学習を進めていて疑問に思った点について調べた結果を備忘録も兼ねてまとめたものです。
そのため、記事の内容に誤りが含まれている可能性があります。ご容赦ください。
間違いを見つけた方は、お手数ですが、ご指摘いただけますと幸いです。## rack-corsの設定方法
“`config/initializers/cors.rb
# Be sure to restart your server when you modify this file.# Avoid CORS issues when API is called from the frontend app.
# Handle Cross-Origin Resource Sharing (CORS) in order to accept cross-origin AJAX requests.# Read more: https://github.com/cyu/rack-cors
Rails.application.config.middleware.insert
Railsのscopeとは
## scope(スコープ)とは
特定のSQL文をメソッドのように呼び出すことができる機能のことです。
下記のように、モデル内にscopeを定義することで使用することができます。
“`hoge_hoge.rb
class HogeHoge < ApplicationRecord scope :active, -> { where(deleted: false) }
scope :by_account, -> lambda{|account_id|where(account_id: account_id)}
end
“`“`rb
# 使用例
HogeHoge.activeHogeHoge.by_account(params[:account_id])
HogeHoge.by_account(params[:account_id]).active
“`## 何が便利なのか?
・コードが短くなる。・適切なscope名をつけることで、直感的に読みやすいコードになる。
・何度も同じようなクエリを使いまわしている場合、
scopeを使用していれば、
rails heroku上のDBをリセットする
# 結論
heroku上のDBをリセットするには、以下のコマンドを実行する。“`ターミナル.
heroku run rails db:migrate:reset DISABLE_DATABASE_ENVIRONMENT_CHECK=1
“`
—
# 環境
– rails 6.0.4.4
– ruby 2.6.5
– MySQL 5.6.51
– heroku## heroku runでDBリセットのコマンドを実行
heroku上のDBをリセットしようと以下のコマンドを実行した。“`ターミナル.
heroku run rails db:reset
“`
以下のエラーが発生。“`ターミナル.
ActiveRecord::ProtectedEnvironmentError: You are attempting to run a destructive action against your ‘production’ database.
If you are sure you want to continue, run the same command wi
解決方法_Webpacker::Manifest::MissingEntryError
# 初めに
原因は細かに追求していません。(調べたけどわかりませんでした)
あくまでも解決方法をまとめています。# エラー内容
Railsアプリを新規作成し、諸々初期設定を終え、いざ`bin/rails s`してブラウザで表示すると、下記のエラー文が表示。
エラー内容は、1.You〜に書いてある通り,webpackerの設定がコンパイルしないようになっていることが原因のよう。`javascript_pack_tag`がレイズされてるのはなぜなのか、、。
webpackerでコンパイルしない設定になっているのに、JSをwebpackerでコンパイルする記述になっているから?Webpacker::Manifest::MissingEntryError
Webpacker can’t find application in /Users/”ユーザ名”/app/public/packs/manifest.json.
Possible causes:
1. You want to set webpacker.yml value of compile to true for your
【RSpec】なぜテストを書くのか?
伊藤さんのスライドの中で「テストの品質」についてこう書かれていた。
##テストの役割
1. 安全ネットとしての役割
2. 実装の正しさを証明する役割
3. コードの品質を向上させる役割
4. 省力化ツールとしての役割
5. バグを叩き潰す役割
6. 設計を支援する役割
7. 説明書としての役割その中でも実際にテストを書いていて、特に実感したものを所感とともに挙げていく。
##その1 バグを叩き潰す役割
バグが起きたときは**修正する前に**テストを書く。“`
修正しちゃんと実装されたらこう動くというテストを書いて落としておく
→バグ改修
→実装が正しければテストがグリーンになる
“`上記の手順でバグ改修を行うことで、目視だけではなく実装として正しく修正されたことの証明にもなる。
(たまに書いたテスト自体が間違っていた場合もある…)##その2 説明書としての役割
テストは仕様書にもなる。
過去の自分や他の人が書いたコードを読み解くとき、すでに走っているプロジェクトに途中で入って各機能を理解しなくてはいけないときなどにテストを読むことでだいたいを理解するのに役立
【Rails】 Webpacker::Manifest::MissingEntryError in
## エラーの内容
Webpacker::Manifest::MissingEntryError in ooo#xxx
![スクリーンショット 2022-02-14 16.12.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/687433/ef6ce708-e2c5-7447-3bac-7f9c51477ba5.png)## 原因
webpackでコンパイルしていないことです。このため、webpackでコンパイルすれば解決します。## 解決方法
“`sh
$ rails webpacker:install
“`# 上記のコマンドで以下のログが出たら
“`
Yarn not installed. Please download and install Yarn from https://yarnpkg.com/lang/en/docs/install/
Exiting!
“`以下のコマンドをしてやる
“`sh
$ npm install –global yarn# i
enumerizeのオプション・メソッドまとめ
enumerizeを使っておきながら便利なオプションやメソッドを活用しきれていなかったので、
備忘録も兼ねてメソッドとオプションをまとめました!### 最もベーシックな使用方法
“`ruby
class User
extend Enumerizeenumerize :status, in: [:student, :employed, :retired]
end
“`
これだけでモデルにinclusionバリデーションが追加されます(便利ぃ)
ここから更に便利なオプションやメソッドを紹介します!## 目次
[skip_validationsオプション](#skip_validationsオプション)
[defaultオプション](#defaultオプション)
[scopeオプション](#scopeオプション)
[multipleオプション](#multipleオプション)
[predicatesオプション](#predicatesオプション)
[_textメソッド](#メソッド)
[valuesメソッド](#valuesメソッド)
[その他(enumerizeの値
Webpacker::Manifest::MissingEntryErrorへの対処法まとめ
### はじめに
Webpacker::Manifest::MissingEntryErrorが発生した際の対処法です。
個人的的に大変頭を悩ませたエラーでしたのでこちらに備忘録を残していきます。### 対象者
下記リンクの偉大な先人達の解決策でも解決できなかった方へhttps://qiita.com/negisys/items/2bf88659f584fe45b686#rails%E3%82%92%E5%A7%8B%E3%82%81%E3%82%88%E3%81%86%E3%81%A8%E3%81%97%E3%81%9F%E3%82%89%E3%81%95%E3%81%A3%E3%81%9D%E3%81%8F%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%AB%E9%81%AD%E9%81%87
https://qiita.com/NaokiIshimura/items/8203f74f8dfd5f6b87a0
https://qiita.com/masatwork/items/1b5d190cc76f5eeffbb7
https://qiita.c
ターミナルでRailsを起動するとPostgreSQLが突然エラーになった。
#エラー内容
~~~
ActiveRecord::ConnectionNotEstablished (could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket “/tmp/.s.PGSQL.5432”?
~~~##結論、私の場合、下記で解決しました。
postmaster.pidの削除。~~~
rm /usr/local/var/postgres/postmaster.pid
~~~#原因
PostgreSQLを停止すると削除されるが、macOSが正常に終了しなかった場合、プロセスID(PID)が残ったままでエラーになる場合があるとのこと。確かにターミナルをちゃんと終了せずにMacを閉じた覚えがあります。
#その他やったこと
PostgreSQLの起動、停止、リスタート
上記をすると解決した記事をを見て、最初にやってみました。
ですが効果がなかったので、pidを
【個人開発】Twitterで映える!ファンレターを交換・シェアして楽しめるサービス『ご縁箱』をリリースしました✧˖°。
# はじめに…
### ▼ 皆さんはTwitterを使う上で このように感じたことはありませんか?
『 今ある ご縁を大切にしたい 』
『 フォロワーさんと感謝の気持ちを伝えたり、交流を深めたい! 』
『 あの人に話しかけてみたい! 』けどきっかけがない..ちょっと億劫かも…
こういった問題も楽しみながら解決出来る『 ご縁箱 』というサービスを開発しました。(Rails × Vue.js)
### ▼ ご縁箱を使うとどうなる?
##### 実際に使ってみて…
– まだ話したことがなかったフォロワーさんと話すきっかけになった
– 色んなメッセージを頂いてほっこりした気分になった
– 自分の率直な気持ちをレターを送って伝えることで喜んでもらえた
– ご飯の約束ができた(全部焼き肉)仲良しユーザーとの交流も深めることも出来ますが、まだ交流が出来ていないユーザーともコミュニケーションを取るきっかけにすることも出来るサービスです。
![TOP_TITLE.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaw
ユニットテストのメソッドのメモ
| メソッド | 説明 |
| :– | :– |
| assert(式 [, メッセージ]) | 式が真ならば成功 |
| assert_equal(変数1, 変数2 [, メッセージ]) | 変数1と変数2が等しければ成功 |
| assert_not_equal(変数1, 変数2 [, メッセージ]) | 変数1と変数2が等しくなければ成功 |
| assert_nil(変数 [, メッセージ]) | 変数がnilならば成功 |
| assert_not_nil(変数 [, メッセージ]) | 変数がnilじゃなければ成功 |
| assert_match(正規表現, 文字列 [, メッセージ]) | 正規表現に文字列がマッチすれば成功 |
| assert_no_match(正規表現, 文字列 [, メッセージ]) | 正規表現に文字列がマッチしなければ成功 |
| assert_raise(例外1, 例外2 [, 例外3…]) { } | ブロックを実行して例外1,2が発生し、その例外がexpected_exception_klassクラスならば成功 |
| assert
Rails 7 + MySQLの環境構築をDocker composeで作る
二年前に[Rails 6 + MySQLの環境構築をDocker composeで作る](https://qiita.com/croquette0212/items/44378e01de18f62d01df)という投稿を書いたが、Rails 7ではWebpackerが廃止されるなど色々と変更点があったので、Rails 7用に書き直した。
—
Dockerの公式サイトには[Railsアプリケーション用のDocker composeチュートリアル](https://docs.docker.com/compose/rails/)があるが、少し情報が古くRails 7ではうまく動かなかったので、Rails 7で動かすための方法を載せておく。基本は公式チュートリアルの手順に従っているため、Rails 7用に変更したところを中心に補足を入れている。
DBはPostgresではなくMySQLを使う方法を載せておく。
# プロジェクトディレクトリの準備
“`sh
mkdir myrailsapp
cd myrailsapp
“`# 設定ファイルの準備
“`Dockerfile
strip,chomp,chopメソッド
## stripメソッド
stripメソッドに関しては、以前記事を書いたので[こちら](https://qiita.com/wangqijiangjun/items/2c3d9f61afed9d7ecddf)を参照してください簡単にいうとstripメソッドは、文字列の先頭と末尾の空白や改行をすべて消してくれるメソッドでしたね。
## chompメソッド
このメソッドは、末尾の改行コードを削除するメソッドです。
以下のような結果が返ってきます。
“`
a = “RubyOnRails \r\n”
a.chomp
=> “RubyOnRails ”
“`
このように、改行コードが削除されます
## chopメソッド
chopメソッドは文字列の末尾の1文字を削除します。
chompメソッドの違いは、末尾の1文字に改行コードがあるかないかに関わらず、末尾の1文字を削除します。
文字列の終端が “\r\n” であればその 2 文字を取り除きます。
“`
a = “RubyOnRails \r\n”
a.chomp
a = “RubyOnRails”
a.chop
=> “RubyOn
RailsのクラスとDDD・クリーンアーキテクチャ概念のマッピング
## Railsとアーキテクチャ
| Rails | DDD | Clean Architecture
|:———–|————|————:|
| [ActionView](https://api.rubyonrails.org/classes/ActionView.html) | UI層 | Frameworks & Drivers(UI) |
| [ActionController](https://api.rubyonrails.org/classes/ActionController.html) | アプリケーション層 | Interface Adapters(Controllers / Presenters) / Application Business Rules(Use Cases / Interactor) |
| [ActiveModel::Model](https://api.rubyonrails.org/classes/ActiveModel/Model.html) | ドメイン層 | Enterprise Busi
scopeとクラスメソッド
実務でscopeというものをちゃんと理解していなかったので、記録しておこうとおもいます
## モデルのscope
モデルへのメソッド呼び出しとして、よく使われるクエリをまとめたメソッドです。
実際に使い方を見てみましょう“`
class User < ApplicationRecord scope :hoge, -> { where(name: ‘hoge’) }
end
“`
これは、以下のコードと同じです。
“`
User.where(name: ‘hoge’)
“`
このコードの名前をhogeという名前で使えるんです。つまり、
“`
User.hoge
“`
というメソッドが使えるようになります。これのメリットは、メソッドが長くなった時可読性が落ちないし、直感的になりますよね
公式化すれば、以下のようになります
“`
class モデル名 < ApplicationRecord scope :スコープ名, -> { 条件式 }
end
“`## scopeとクラスメソッドの違い
クラスメソッドは、以下のようなコードです
“`
class
スクラムを友達と回し始めた話(プロローグ)
## 初めに
趣味開発でもスクラムという手法が使えるのか?ということを試しているスクラム歴1年の僕の話です
## 状況
* チームの人数は僕含めて6人
* 目的はWebアプリ開発(スケジュール管理アプリ)
* Webアプリ開発・スクラム共に経験者は僕だけ
* 現在はsprint3
* 僕は社会人2年目のAWSを用いてサーバレスシステムを構築していたり、ネイティブアプリを開発していたり多種多様なことをしているエンジニア
* メンバーはITに関わっているが、SIerだったり、大学生だったりする(今回使う技術は未経験)
* 全員同じサークル出身のため面識はある## 使用ツール・技術
* Rails6
* Docker### git管理
* GitHub
* SourceTree###コミュニケーション
* Slack
* Skype### スクラム管理
* Jira
* Trello## どうしてスクラムを始めたか
* 現在のメンバーが多少なりとも、今の仕事に不満を持っていたり、Webアプリ開発に興味があった
* 僕がスクラムについてアウトプットする場が欲しかっ