Rails関連のことを調べてみた2023年01月15日

Rails関連のことを調べてみた2023年01月15日

bin/rspecとbundle exec rspecの違い

# はじめに
・初学者向け
・【RSpec】であれ?っと思った方向けです
久々に書きました。お久しぶりです
Qiita 環境がずっと使えなかったためです

## **環境**

– Windows 11 Home
– Ubuntu20.04
– Ruby 3.0.1
– Ruby on Rails 6.0.3
– psql (PostgreSQL) 12.12
– Bundler version 2.3.25


## **bin/rspecとbundle exec rspecの違い**
■bin/rspec
Rails アプリケーションのルートディレクトリ直下のbin/rspec ファイルを読み込みに行く

> bin/ を付けておけば、Spring経由で高速にコマンドが実行される
bundlerが、gemのバージョンや依存関係も正しく処理してくれる
筆者:Almonta
出典元:[Almonta Blog-【Rails】bin/rspec と bundle exec rspec の違い](https://almonta2021blog.com/

元記事を表示

Error message “error:0308010C:digital envelope routines::unsupported” の解決方法

“`
$ bundle exec bin/webpack-dev-server
“`
上記のコマンドを実行時に
Error message “error:0308010C:digital envelope routines::unsupported”エラーが表示

# 解決方法
“`
$ export NODE_OPTIONS=–openssl-legacy-provider
“`

上記のコマンドで解決

元記事を表示

privateメソッドとは何か、どういう時に使うのか

## Privateメソッドとは何か
クラス外からは呼び出せず、クラス内でのみ使えるメソッドのこと。
(インスタンスを作ってprivateメソッドを直接呼び出すということができない)

“`HogeHoge.rb
# encoding: UTF-8

class HogeHoge
def hoge_method
p(“ほげほげ”)
end

def call_private_hoge_method
p(“プライベートな情報を取得する前の事前作業”)
p(“………”)
private_hoge_method
end

private
def private_hoge_method
p(“プライベートな情報を取得!”)
end
end

hogehoge = HogeHoge.new
hogehoge.hoge_method
hogehoge.call_private_hoge_method
hogehoge.private_hoge_method # 直接呼び出すとエラーになる

“`

`

元記事を表示

カラム名変更

# カラム名を間違えた!
schema.rbを確認したら、カラム名を間違えていたことが判明。修正方法について記録しておく。

※schema.rbは現在の状態を表しているだけなので、schema.rbを書き換えても意味がない。

# 方法①データベースを再構築
データベースに登録されている情報を一旦すべて削除し、もう一度データベースを作る。

カラム名を設定した際に、migrateファイル内の記述は正しいのにschema.rbを確認するとカラム名が違う場合がある。
保存の関係等でそのようなことが起こる場合があり、そういう場合に有効。

~~~
$ rails db:migrate:reset
~~~

これでデータベースが再構築されたはず。
schema.rbを確認し、正しいカラム名になっていればOK!

:::note warn
データベースに登録されているデータがすべて消えてしまうので、チーム開発で使う際は注意。
基本使わないほうが安全。
:::

# 方法② カラム名をピンポイントで修正
### migrationファイルを準備
~~~
$ rails generate migr

元記事を表示

カラムの型、種類

Railsでカラムの型を設定するときの自分用備忘録です。

# カラムの型と意味
| 型 | 意味 |
|:-:|:-:|
| string | 文字列(1〜255文字) |
| text | 長い文字列(1〜4294967296文字) |
| integer | 整数(4バイト) |
| bigint | 整数(8バイト) |
| numeric | 数値 |
| datetime | 日時 |
| timestamp | タイムスタンプ |
| time | 時間 |
| date | 日付 |

他にもたくさんあると思うので、調べたら適宜追加していこうと思います。

# おまけ① migrationファイルでの書き方
~~~ruby:db/migrate/(作成日時)_create_lists.rb
def change
create_table :テーブル名 do |t|
t.データ型 :カラム名
end
end
~~~

# おまけ② カラムの追加コマンド
~~~
$ rails g migration Addカラム名Toテーブル

元記事を表示

gem ‘capistrano-sidekiq’ を使って デプロイ中にcommand not found(コマンドが見つかりません)エラー

バージョンが古いためか結構詰まってしまったので書いておきます。
gemをinstallしてCapfileに`require ‘capistrano/sidekiq’`と書いただけのシンプルな設定です。

## 公式
capistrano: https://github.com/capistrano/capistrano
sidekiq: https://github.com/mperham/sidekiq/wiki/Deployment
capistrano-sidekiq: https://github.com/seuros/capistrano-sidekiq

## 解決方法
– capistranoのバージョンが3.4.0だったため、3.9.0にアップデート(※2023年/1月現在の最新は3.17です)
– deploy.rbに`set :rbenv_map_bins, %w(rake gem bundle ruby rails sidekiq sidekiqctl)`のように、sidekiqとsidekiqctlを追記

## どんなエラーだったか
`cap staging

元記事を表示

Ruby3.0.0+Rails6.1.3からRuby3.2.0+Rails7.0.4にバージョンアップした話

## はじめに

Heroku-18 Stackで動いているアプリケーションがあり、こちらが[2023/4にEOL](https://devcenter.heroku.com/ja/articles/heroku-18-stack#support-period)を迎える。
それに伴いHeroku Stackを上げるとRubyのバージョンも上げないといけなかった。

[参考](https://devcenter.heroku.com/ja/articles/ruby-support#ruby-versions)
>Heroku-22 で使用可能な最も古い Ruby バージョン: Ruby 3.1.0

せっかくだったらこの機会に最新にしようと思い、バージョンを上げたのでその時の注意事項をメモ書き程度に残しておく。
前回上げた話はこちら。
[Ruby2.3.4+Rails5.0.4からRuby3.0.0+Rails6.1.3にバージョンアップした話](https://qiita.com/yamamoto_hiroya/items/62dfae2dda7f35452b44)

## Gemf

元記事を表示

bundle exec cap production deployでのエラー解決方法

## はじめに
プログラミング初心者による備忘録です。

railsアプリのEC2への`Capistrano`を使用しての自動デプロイ設定中に発生したエラーの解決方法を残します。

## 問題とエラーメッセージ

以下のコマンドを実行
“`
% bundle exec cap production deploy
“`
すると以下のエラーが発生

“`

01:00 deploy:assets:precompile
01 $HOME/.rbenv/bin/rbenv exec bundle exec rake assets:precompile
01 bundler: failed to load command: rake (/var/www/myapp/shared/bundle/ruby/2.6.0/bin/rake)
01 Bundler::GemNotFound: Could not find date-3.3.3 in any of the sources
01 /home/ec2-user/.rben

元記事を表示

Deviseでletter_openerを用いたパスワードリセット

# 環境
MacOS
Rails 6.1.6
Ruby 3.1.2

# 前提
Deviseでログイン、ログアウトの実装を完了している。

# 注意
同じような検索をかけると、sorceryという謎のものが出てくるが、Deviseとは別の認証モジュールなので、一緒には使えない。はず。

# 実装イメージ
ログイン画面 にforgot password?
この案内リンクからメール送信画面へ
letter_openerで送信
/letter_openerで受信確認
再設定リンク踏んで、パスワード再設定
再設定したらログイン画面へ遷移し、成功メッセージを確認

# 手順
## forgot password?の実装
“`view/divise/session/new.html.erb
<%= link_to "forgot password?", new_user_password_path %>
“`
リンク先は `$rails routes`で確認
`view/devise/passwords/new.html.erb`に飛びたいので、
`devise/passwords#new`を

元記事を表示

bundle exec unicorn_railsコマンドでのエラー

## はじめに
プログラミング初心者による備忘録です。

今回はEC2内でrailsサーバーを立ち上げようとした時に発生したエラーと解決できた方法を残します。

## 問題とエラーメッセージ

EC2内で以下のコマンドを実行。
“`
$ bundle exec unicorn_rails -c config/unicorn.rb -E production -D
“`
すると以下のようなエラーが発生。
“`
Your RubyGems version (3.0.3) has a bug that prevents `required_ruby_version` from working for Bundler. Any scripts that use `gem install bundler` will break as soon as Bundler drops support for your Ruby version. Please upgrade RubyGems to avoid future breakage and silence this warning by

元記事を表示

bundle exec cap production deploy でのエラー解決方法

## はじめに
プログラミング初心者による備忘録です。

今回は`Capistrano`を使用してのEC3への自動デプロイをする過程で発生したエラーについて、解決方法を残します。

## 発生している問題・エラーメッセージ
以下のコマンドを実行したところ
“`
% bundle exec cap production deploy
“`

下記のエラーが発生
“`
00:00 git:wrapper

中略

00:05 git:create_release
01 mkdir -p /var/www/hoge/releases/20230111145424
✔ 01 ec2-user@35.79.231.12 0.079s
02 git archive master | /usr/bin/env tar -x -f – -C /var/www/hoge/releases/20230111145424
02 fatal: not a valid object name: master
02 tar:

元記事を表示

haml-rails によるerb->haml変換

Gemfile書き方

“`Gemfile
gem ‘haml-rails’
“`

変換コマンド

“`
rails haml:erb2haml
“`

元の.erbファイルを削除するか -> y

“`
Would you like to delete the original .erb files? (This is not recommended unless you are under version control.) (y/n)
y
Deleting original .erb files.
“`

元記事を表示

undefined method `current_sign_in_at’ for #< ~~~ > の解決方法

# はじめに
こんにちは! @Keichan_15 です!

Deviseを用いて `sign_up` や `sign_in` を行うと、表題にある `undefined method ‘current_sign_in_at’ for`のエラーが出た際の解決方法について、備忘録も兼ねて記載していこうと思います。

尚、こちらのエラーを検索すると下記のような記事や解決方法が出てきます。結論、解決方法として間違いでは無いです。今回の想定としてはdeviseをinstallしてごくごく一般的なモデル作成を行った場合 `ex) $ rails g devise User` を前提としてお話していきます。
下記の方法でも間違いでは無いですが、マイグレーションファイルを修正してresetを掛けるといったナンセンスなことは面倒なので…ってことですね。

https://qiita.com/Asaiii12/items/6893ffe808166da52499

https://stackoverflow.com/questions/55735895/nomethoderror-undefined-m

元記事を表示

【個人開発】料理人のための仕込み管理アプリCucina-クッチーナ-を作りました

## はじめに
こんにちは!@harufumi03と申します。
この記事は初学者が初めて個人開発したWebアプリの紹介記事です。
ちなみに「クッチーナ」という名前はイタリア語で「キッチン」という意味です。

アプリURL:http://cucina-app.com/
「仕込み」とは?…お客様に素早く料理を提供するための下準備のこと

## 開発の経緯
私は調理師として働いていた経験があり、困り事がありました。
###### それは日常業務の「仕込み」についてです。
私の経験上「仕込み」を行う時は担当している仕込みを個人的に管理してホワイトボードやメモなどに書き出して管理していました。それにより他の人と使用する食材が重なってしまったり、気をつけていても忘れてしまって仕込みが出来ず、関連する料理の提供ができないという事もありました。この問題点をチーム内で共有して誰が何の仕込みをしてどの食材を使用するのか分かるようになれば解決できてお客様にも問題なく料理を提供できるのではないかと考え開発しようと考えました。
kaiketsu.png

元記事を表示

has_secure_passwordとは

# has_secure_passwordは検証もしている。
### 前
“`rb
has_secure_password
.
.
.
validates :password, presence: true,
length: { minimum: 6},
allow_nil: true

“`
## バリデーションに引っかかってみる
“`can’t be blank“`
“`is too long (maximum is 20 characters)“`
“`can’t be blank“`
### errorの配列を見てみる。
“`
#, #20}>, #

元記事を表示

エラー:bundler: command not found: unicorn_rails Install missing gem executables with `bundle install`

## はじめに
プログラミング初心者による備忘録です。

AWSでデプロイするために`unicorn`でrailsを起動させようとした所、エラーが発生。

## エラー内容
“`
[ec2-user@ip-000-00-00-00 hoge]$ bundle exec unicorn_rails -c config/unicorn.rb -E production -D
bundler: command not found: unicorn_rails
Install missing gem executables with `bundle install`
“`

## 試したこと
下記のサイト様の症状と同じなので解決方法を試す。
参考サイト https://teratail.com/questions/315531

❶rbenvをrehash
❷bundlerの入れ忘れ
❸GitHubへの反映(push,bundle install)

しかし、解決できず。

## 解決方法
“`
% cat .bundle/config
“`
でconfigファイルの設定を確認すると

元記事を表示

エラー:An error occurred while installing pg (1.4.5), and Bundler cannot continue.

## はじめに
プログラミング初心者による備忘録です。

今回はrenderにデプロイされているアプリをAWSのEC2環境へ移す際にエラーが発生したので、その原因と解決方法です。

## 何をしている時にエラーが出たのか
以下のコマンドでEC2内にローカルと同じバージョンの `bundler`をインストールしようとしました。
“`
[ec2-user@ip-000-00-00-000 hoge]$ gem install bundler -v 2.1.4

[ec2-user@ip-000-00-00-000 hoge]$ bundle install
“`
すると以下のエラーが発生。
“`
[ec2-user@ip-000-00-00-000 hoge]$ bundle
The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby, x86_64-linux but the dep

元記事を表示

【rails】DM機能からグループチャット作ってみた〜

# 前提
https://qiita.com/nojinoji/items/2b3f8309a31cc6d88d03

この記事でDM機能を作っときましょう
# やり方ー
### Controller
“`ruby:rooms_controller.rb
(略)
def new
@users = User.all
@current_room = Room.find(params[:id])
@entry = Entry.new
end
def room_add_user
entry = Entry.new(entry_params)
if entry.save
redirect_to room_path(entry.room_id)
else
redirect_to new_room_path(entry.room_id)
end
end
(略)
private
def entr

元記事を表示

Rails7構築 -その2#- cssをbootstrap指定(FontAwesomeまで)

### ↓その1のRails newからの続きです。
https://qiita.com/devzooiiooz/items/5f12c0601acd2ae9b5d9

その1はデフォルト(javascriptアプローチにimportmaps、アセットパイプラインはsprocketsを使用)で構築する方法ですが、ここではcssプロセッサでbootstrapを指定する方法を説明します。

##### 参考:こっちはimportmapsを使用する場合
https://qiita.com/devzooiiooz/items/4e8514622fd0661048c1

# Rails newにcssオプションでbootstrapを指定
これによりjavascriptアプローチがesbuildに固定され(-j esbuildと同じ)、importmapは使用できなくなる。アセットパイプラインはデフォルトのsprocketsになるようです。
“`sh:
$ rails new . -c bootstrap -d mysql
“`
# 動作確認用のページを作成
“`sh:
$ rails g

元記事を表示

MySQL カラム エラー

# はじめに
deviseを用いてユーザー管理機能の実装中にエラーが発生しました。

# エラー内容
`migrateファイル`にてテーブル作成中。
↓以下のようにカラムの設定を実装した。
~~~ruby
create_table :users do |t|
## Database authenticatable
t.string :email, null: false, default: “”
t.string :encrypted_password, null: false, default: “”
t.string :name, null: false, default: “”
t.text :profile, null: false, default: “”
t.text :occupation, null: false, default: “”
t.text :position,

元記事を表示

OTHERカテゴリの最新記事