Ruby関連のことを調べてみた2022年02月15日

Ruby関連のことを調べてみた2022年02月15日

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

元記事を表示

ポートフォリオ

#はじめに
ポートフォリオとして作成した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)

最近、転売による商品の不足、高騰などが問題になっているなと思い、アプリを作成しました。
転売をするためには商品を大量に購入する必要があると考え、一つの商品を大量に購入できないような仕組みとしてアプリを作成しています。

ただ、アプリの作成はしましたが、購入する際に手間が増える、

元記事を表示

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.active

HogeHoge.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 説明書としての役割
テストは仕様書にもなる。
過去の自分や他の人が書いたコードを読み解くとき、すでに走っているプロジェクトに途中で入って各機能を理解しなくてはいけないときなどにテストを読むことでだいたいを理解するのに役立

元記事を表示

Ruby on Rails チュートリアル第8章をやってみて

#基本的なログイン機構
■第8章
基本的なログイン機構を構築していく。

##8.1 セッション
HTTPは状態のないプロトコル。HTTPのリクエスト1つ1つは、それより前のリクエストの情報をまったく利用できない、独立したトランザクションとして扱われる。

ログインするとcreateでセッションを作成して保存。
ログアウトするとdestroyでセッションを破棄。

###8.1.1 Sessionsコントローラ
ログインとログアウトの要素を、Sessionsコントローラの特定のRESTアクションにそれぞれ対応付ける。

セッションコントローラの作成。

“`rb
$ rails generate controller Sessions new
“`

リソースを追加して標準的なRESTfulアクションをgetできるようにする。
以下のコードを追記。

“`ruby:routes.rb
get ‘/login’, to: ‘sessions#new’
post ‘/login’, to: ‘sessions#create’
delete ‘/logout’,

元記事を表示

enumerizeのオプション・メソッドまとめ

enumerizeを使っておきながら便利なオプションやメソッドを活用しきれていなかったので、
備忘録も兼ねてメソッドとオプションをまとめました!

### 最もベーシックな使用方法
“`ruby
class User
extend Enumerize

enumerize :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

元記事を表示

Ruby on Rails チュートリアル第7章をやってみて

#ユーザー登録
■第7章
Userモデルができあがったので、ユーザー登録機能を追加していく。
この第7章からは難易度が少しずつ上がっていくっぽい。

##7.1 ユーザーを表示する
ユーザーの名前とプロフィール写真を表示するためのページを作成していく。

###7.1.1 デバッグとRails環境
`debug`メソッドと`params`変数を使って、各プロフィールページにデバッグ用の情報が表示されるようにする。

`application.html.erb`に追記。

“`rb
<%= debug(params) if Rails.env.development? %>
“`

if以降のコードは「開発環境?」という意味。

デバッグ出力をきれいに整形するために、cssを弄る。

“`rb
@import “bootstrap-sprockets”;
@import “bootstrap”;

/* mixins, variables, etc. */

$gray-medium-light: #eaeaea;

@mixin box_sizing {
-moz-box-s

元記事を表示

更に pagepank で じゃんけん と トランプ と 軍人将棋 をやってみた

# はじめに
https://qiita.com/superrino130/items/42ac760b0f202cefe6bc

前回の記事を投稿後、Ruby版networkxに携わることがあったので、更にやってみた。
# じゃんけん
“`ruby
require_relative ‘lib/networkX’

h = {
1 => [2],
2 => [3],
3 => [1]
}
g = NetworkX::DiGraph.new
h.each do |k, v|
v.each do |ve|
g.add_edge(ve – 1, k – 1)
end
end
puts NetworkX.pagerank(g)

# output
0.3333333
0.3333333
0.3333333
“`
https://ja.wikipedia.org/wiki/%E3%81%98%E3%82%83%E3%82%93%E3%81%91%E3%82%93

じゃんけんは三つ巴ですので、同じ得点になります。
# トランプ
“`ruby
h = {
1

元記事を表示

【個人開発】Twitterで映える!ファンレターを交換・シェアして楽しめるサービス『ご縁箱』をリリースしました✧˖°。

# はじめに…

### ▼ 皆さんはTwitterを使う上で このように感じたことはありませんか?
『 今ある ご縁を大切にしたい 』
『 フォロワーさんと感謝の気持ちを伝えたり、交流を深めたい! 』
『 あの人に話しかけてみたい! 』

けどきっかけがない..ちょっと億劫かも…

こういった問題も楽しみながら解決出来る『 ご縁箱 』というサービスを開発しました。(Rails × Vue.js)
### ▼ ご縁箱を使うとどうなる?
##### 実際に使ってみて…
– まだ話したことがなかったフォロワーさんと話すきっかけになった
– 色んなメッセージを頂いてほっこりした気分になった
– 自分の率直な気持ちをレターを送って伝えることで喜んでもらえた
– ご飯の約束ができた(全部焼き肉)

仲良しユーザーとの交流も深めることも出来ますが、まだ交流が出来ていないユーザーともコミュニケーションを取るきっかけにすることも出来るサービスです。
![TOP_TITLE.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaw

元記事を表示

Rails7のapiモードでGraphQLを使ってみた

# 目的

Rails で GraphQL を使うときはどんな感じに書くのかを確認する

# 必要なもの

– Docker(今回使用バージョン: Docker version 20.10.12, build e91ed57)
– VSCode(Remote Develpment 拡張機能を使用, 今回使用バージョン: Version: 1.64.1)
– ブラウザ(今回は Chrome バージョン: 98.0.4758.80(Official Build) を使用)

# 開発環境構築

## VSCode を起動して Dockerfile を作成し仮想環境を起動する

VSCode で開発用の空フォルダを開く(ここでは /dev/rails_graphql とする)

Ruby 環境の Dokerfile を作成する

“`dockerfile:/dev/rails_graphsql/Dockerfile
FROM ruby
“`

VSCode のコマンド Reopen in Container で From Dockerfile から仮想環境に切り替える

## rails

元記事を表示

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

元記事を表示

ANSI Color Code一覧をPython3で見た件とその知見

すでに既出な題ですが、僕好みなColor一覧がなかったのであえて作成することにしました。 その際の副産物をここに投下いたします。

## 即使えるコピペ用Color Codeスニペット

「文」という部分を置き換えて使います

“`shell
“\033[30m文\033[0m”
“`

“`shell
“\033[31m文\033[0m”
“`

“`shell
“\033[32m文\033[0m”
“`

黄色

“`shell
“\033[33m文\033[0m”
“`

“`shell
“\033[34m文\033[0m”
“`

マゼンタ

“`shell
“\033[35m文\033[0m”
“`

元記事を表示

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

元記事を表示

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

元記事を表示

sketchupでruby その21

#概要

sketchupでrubyやってみた。
make_fur使ってみた。

#写真

![make.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18104/c6292bbb-a024-ad2e-4abc-4c8f0b52ff39.jpeg)

#サンプルコード

“`
def glowup(preview = false)
@finstance = “yes”
@funits = “funits”
@camera = Sketchup.active_model.active_view.camera
@fdensity = 10.0
@flength = 10.0
@frootw = 10.0
@fvradius = 10.0
@maxnum = 10
@fforce = Geom::Vector3d.new(0.0, 0.0, 0.05)
@fdirection = Geom::Vector3d.new(0.0, 0.0, 0.05)
@ftype = “ftype

元記事を表示

Ruby on Rails チュートリアル第6章をやってみて

#ユーザーのモデルを作成する
■第6章
第5章では、新しいユーザーを作成するためのスタブページを作ったところで終わった。本章では、一番重要なステップであるユーザー用のデータモデルの作成と、データを保存する手段の確保について学んでいく。

Railsでは、本番アプリケーションに適した認証システムを自分で構築するアプローチも選択できる。筆者曰く、自分自身で認証システムを構築した経験があれば仕組みを理解し、必要に応じて変更することがずっと容易になるらしい。

##6.1 Userモデル
ユーザー登録でまず初めにやることは、それらの情報を保存するためのデータ構造の作成。
Railsは、データベースの細部をほぼ完全に隠蔽し、切り離してくれる。
本書ではSQLiteを開発環境で使い、また、PostgreSQLを(Herokuでの)本番環境で使う。

###6.1.1 データベースの移行
この節での目的は、簡単に消えることのないユーザーのモデルに構築。
Railsはデータを保存する際にデフォルトでリレーショナルデータベースを使う。リレーショナルデータベースは、データ行で構成されるテーブルからなり、各

元記事を表示

【2022年版】HerokuでRailsの画像が表示されないときの適切な対処法(と間違った対処法)

## はじめに
HerokuにRailsアプリをデプロイすると、以下のようなトラブルがよく発生します。

– ローカルでは表示されていた画像( `app/assets/images/` に保存していた画像)が表示されない!
– 画像が表示されるはずのページで、”The page you were looking for doesn’t exist.”というエラー画面が出た!

そこで「Heroku rails 画像 表示されない」のようなキーワードで検索すると、この問題の対処法が載ったページがたくさん表示されます。しかし、以下のような情報が載っているページは間違いです。

> **?これは間違い!!**
> `config/environments/production.rb` を開き、 `config.assets.compile = false` の値を `true` に変更しましょう。

以下の対処法が載っている場合も多いですが、これもやはり間違いです。

> **?これも間違い!!**
> `bin/rails assets:precompile RAILS_ENV=produ

元記事を表示

OTHERカテゴリの最新記事