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

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

Railsに認証機能(devise)を導入する。

# Devise to Rails

Railsに認証機能(devise)を導入する。

deviseとはrails用の認証モジュールです。
これを利用することで簡単にrailsで認証機能を実現できます。

認証機能とは、いわゆる、ログイン・サインイン処理のことです。

## 環境情報

自分の環境情報です。

| 機能 | バージョン |
| —- | —- |
| Ruby | 3.1.3 |
| Rails | 7.0.4 |
| Node | 18 |

## 手順

以下の手順で導入できます。

1. Gemfileの編集とモジュールのインストール
2. deviseモジュールのセットアップ
3. モデルの生成
4. マイグレーション
5. ビューの設定

## 1. Gemfileの編集とモジュールのインストール

Gemfileに以下の行を追加します。

“`Gemfile
gem ‘devise’
“`

そのあと以下のコマンドを実行してモジュールをインストールします。

“`shell
bundle install
“`

元記事を表示

Amazon S3 Presigned URLを使用して、Herokuに大きなファイルをアップする方法

# はじめに
こんにちは!
SalesforceやHerokuの導入・開発を行っている株式会社Prazto(プラート)の代表をしております[芳賀](https://twitter.com/hagasatoshi1 “芳賀”)と申します。

本日は、Herokuで構築した顧客向けポータルにサイズの大きなサイズのファイルをアップする場合の留意点と、S3 Presigned URLを使用したその留意点の回避方法についてご紹介をいたします。

# 記事の要約
– 「インフラエンジニアがいらないPaaS」Herokuの特徴と留意すべき事項
– Herokuのポータルに大きなファイルをアップする際の留意点
– S3 Presigned URLを使用すると、無理なく実装することが可能
– Heroku Connectを使用してSalesforceと連携する場合にも活用できる

# 「インフラエンジニアがいらないPaaS」Herokuの特徴
まず本題に入る前に、Herokuの特徴について簡単におさらいします。

数多くあるPaaSの中でのHerokuの特徴のわかりやすい表現として、**「インフラエンジ

元記事を表示

RailsでBootstrapとscssを使う。

# Railsでscssとbootstrapを使おう?

Ruby on Railsでscssとbootstrapを使用して簡単にデザイン関係のセットアップをしましょう?

## 環境情報

| 機能 | バージョン |
| —- | —- |
| Ruby | 3.1.3 |
| Rails | 7.0.4 |
| Node | 18 |

## 手順

1. Nodeのインストール
2. Gemfileの編集
3. パッケージのインストール
4. bootstrapのインポート

## 自分の環境に関する情報

Dockerを使っています。
Dockerfileは以下の通り。

“`Dockerfile
FROM ruby:3.1.3

RUN apt update -qq && apt install -y postgresql-client nodejs
WORKDIR /myapp
COPY Gemfile Gemfile.lock ./
RUN bundle install
COPY . .

EXPOSE 3000

CMD [“rails”, “s

元記事を表示

resourcesメソッドとは・親子関係の注意点

# resourcesメソッドとは
## 基本の使い方
ルーティングを一括自動生成してくれる機能。
コントローラーの以下の記述をすると、自動で作ってくれる。
~~~ruby
resources :モデル名
~~~

~~~ruby:routes.rb
resources :books
~~~
自動作成してくれるルーティングは以下。

new(投稿を作成する画面)
show(投稿の詳細画面)
index(投稿の一覧画面)
edit(投稿の編集画面)
create(投稿作成)
destroy(投稿削除)
update(投稿更新)

## onlyオプション
生成するルーティングを限定することが出来る。
~~~ruby:routes.rb
resources :books,only:[:new,:create,:index,:show]
~~~

## 親子関係
例えば、投稿内容にコメントをつける機能を実装したい場合、
~~~ruby:routes.rb
resources :books,only:[:new,:create,:index,:show] do
resources :comm

元記事を表示

Ruby on Rails初心者の学習記録 Part2:モデルについて

# はじめに
Ruby on Rails初心者の学習記録Part2です。
[Part1](https://qiita.com/Yasushi-Mo/items/d24fd4abab2c1333c522)では、Rubyの基本文法やRailsを利用したWebアプリケーションの開発環境構築手順及びルーティングについて学びました。
今回は[「Getting Started with Rails」](https://guides.rubyonrails.org/getting_started.html)の[「**6 MVC and You**」](https://guides.rubyonrails.org/getting_started.html#mvc-and-you)を教材にMVCアーキテクチャの**モデル**を学んでいきたいと思います。

# 1. モデルとは
[「Getting Started with Rails」](https://guides.rubyonrails.org/getting_started.html#mvc-and-you-generating-a-model)に

元記事を表示

react-rails でレンダリングされないという話

react-rails を導入しようとして詰まった
https://github.com/reactjs/react-rails

このREADME通りにすすめても hellow world component が表示されない。。。

## やったこと

javascript_pack_tag を app/views/layouts/application に記述する

“`
<%= javascript_pack_tag 'application' %>
“`

## 結果

表示されるようになった

## 他にやった & 関係ありそうなこと

### node のアップデート

react-rails のインストール手順をやりなおして進めていくと node のバージョンで怒られたので 12 -> 18 に更新した。

これ関係あるかもしれない。もし javascript_pack_tag 指定しても駄目なら node のバージョン見直そう。

## 他にやったこと & 関係無さそうなこと

### turbo をオフにする
詳しい原因はわからないが、悪さしている可

元記事を表示

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

元記事を表示

OTHERカテゴリの最新記事