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

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

railsのconfigとは

# 疑問
* config/application.rb内で“`config. …“`と書いている。
この“`config“`とは何なのか?知りたい。

# 設定ファイル(config)
設定ファイルについて

### 説明
Railsでは、config/以下の設定ファイルによって設定を変更

### 特徴
“`「config.パラメータ名 = 値」“`の形式で設定
設定を反映するには、“`サーバの再起動が必要“`
文字コードは、UTF-8

### 主な設定ファイル
説明
application.rb “`すべての環境で共通の設定“`ファイル
environment/ 環境ごとの設定ファイルを格納するディレクトリ
development.rb 開発環境での設定ファイル
test.rb テスト環境での設定ファイル
production.rb 本番環境での設定ファイル
initializers/ その他の初期化処理や設定情報などを格納するディレクトリ
infiections.rb 単数形・複数形のルールを設定
mime_type

元記事を表示

夜職おすすめランキング.com|風俗・交際(デート)クラブ・メールレディ・チャットレディ |

https://pvk.jp/

元記事を表示

updateアクションを使用しても更新されない

# はじめに
某オンラインスクールで学習中の者です。自分が体験したエラーを
アウトプットの意味も込めてQiitaに投稿しておきます。

# 前提要素
– editアクション完了
– updateアクション完了
– form要素はrenderメソッドを用いて`new.html.erb`、`edit.html.erb`に使用している。

# エラー内容

編集ページより投稿を編集したところ
newアクションが適応されてしまう。(エラー画面無し)

そのため一覧にどんどん投稿が増えていってしまう。。。

# 問題解決
editのルーティングを間違えていた。
パスを修正することで解決した。

# 解決過程
~~~ruby show.html.erb
<%= link_to "編集する", edit_○○○○○○_path %>
~~~
↑ `editパス`に`@○○○○○○.id`とidの指定をしていなかった。

そのため、idを指定できていなかった為、既にある投稿を読み込むことができず
newアクションのform要素からcreateアクションを送信する形となった。

元記事を表示

Ruby on RailsでDBを途中からmysqlに変更したいときに変更する場所

# はじめに
当記事はRuby on Railsでアプリケーションを作成している途中でDBを変更したいと思ったときに変更する場所を記します。
今回はSQLiteからmysqlへ変更します。

また、最初からmysqlで始める場合は以下のコマンドで`new`することでmysqlで開始することができます。

“`terminal:terminal
rails new アプリケーション名 -d mysql
“`

# 環境

“`terminal:terminal
$ ruby -v
ruby 2.7.3
$ rails -v
Rails 7.0.4
mysql -version
mysql Ver 8.0.31
$ bundle -v
Bundler version 2.1.4
“`

# 前提条件

* DBの設定が完了していること。(mysqlだと最低限、rootユーザーでアクセス可能である。)

# DB変更

1. Gemfileに以下を追記する。

“`:/Gemfile
gem “mysql2”
“`
1. terminalから`Gemf

元記事を表示

RailsのDeviseによる認証機能にカラムを追加する。

# Railsの認証関連データを増やしてみよう。

Railsの認証機能モジュールである、Deviseを使用すると簡単にRailsに認証機能を導入できます。
このモジュールでは以下のデータをデフォルトで扱います。

– id
– email
– encrypted_password
– reset_password_token
– reset_password_sent_at
– remember_created_at
– created_at
– updated_at

これに「name」「comment」「birthday」を追加してみましょう。

## 手順

以下の3ステップで実現できます。

1. マイグレーションデータの作成
2. マイグレーションの実行
3. アプリケーション設定の変更

## 1. マイグレーションデータの作成

“`shell
rails g migration AddCommentAndBirthdayToUsers name:text comment:string birthday:date
“`

これによってマイグレーション

元記事を表示

railsのコンポーネントを構成する

疑問に思っているところは、
* デフォルトのロケールを変更するのに“`config/application.rb“`をなぜ使うのか?

# config/application.rbとは

3 Railsコンポーネントを構成する

一般に、Railsの設定作業には、“`Rails自身の設定“`と、“`Railsのコンポーネントの設定“`があります。“`config/application.rb“`および
“`環境固有の設定ファイル“`(config/environments/production.rbなど)に設定を記入すると、
Railsの“`すべてのコンポーネントにそれらの設定が反映“`されます。

たとえば、config/application.rbファイルに以下の設定を追加できます。
“`rb
config.time_zone = ‘Central Time (US & Canada)’
“`
“`上はRails自身のための設定“`ですが、個別のRailsコンポーネントに設定を反映するときにも、
以下のようにconfig/applicatio

元記事を表示

エラーメッセージを日本語化する

# 日本語化の方法
* “`rails-i18n“`gemを使って日本語にするらしい。
### 出典
https://zenn.dev/machamp/articles/rails-validation-message#2.rails-i18n-%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E6%97%A5%E6%9C%AC%E8%AA%9E%E5%8C%96%E3%81%99%E3%82%8B

https://qiita.com/shimadama/items/7e5c3d75c9a9f51abdd5

* p313 Railsでよく利用する辞書データは“`rails-i18n“`というgemで利用できます。
### 出典
https://gihyo.jp/book/2020/978-4-297-11462-6

### 気づき
このgemをインストールをしないと翻訳できないのだろうか?

# I18nの属性
“`rb
rb(main):049:0> I18n.load_path
# カスタム訳文ファイルの場所を示す
=>
[“/*******

元記事を表示

バリデーションで設定する様々な制限

バリデーションの際に、制限したいことをどう設定すれば良いのか忘れがちなので記録しておきます。

## バリデーションの設定場所・設定方法
各モデルのモデルファイルに設定内容を記述する。
例えば、タイトルと本文を空白では投稿できないようにしたいときは
~~~ruby:models/books.rb
class Book < ApplicationRecord validates :title, presence: true validates :body, presence: true end ~~~ のように記述する。 ### ★文字数制限 lengthオプションを使う。 #### 文字数の上限・下限を設定する 最低文字数の制約を設ける場合はminimum、最高文字数の制約を設ける場合はmaximumを使う。 ~~~ruby validates :body, presence: true, length: {minimum: 10, maximum: 200} ~~~ 上記の場合は、本文が10文字以上200文字以下となる。 別の書き方もできる。 ~~~ruby validate

元記事を表示

Ruby on Railsを基本からまとめてみた【エラーに対するトラブルシューティング①】

railsで『API』を作成しようとしたら、下記のエラーが表示。

“`
Rails is not currently installed on this system. To get the latest version, simply type:

$ sudo gem install rails

You can then rerun your “rails” command.
“`
#### 解決方法

下記のコマンドをシェルに打ち込んだら、解決したので記載。

“`
export PATH=”$HOME/.rbenv/bin:$PATH”
“`
または

“`
export PATH=”$HOME/.rbenv/shims:$PATH”
“`

#### 原因

シェルを変えたことで、パスを設定し直さなければならないのを忘れていたことが原因とのこと。
rbenvのpathが無くなったことで、macに標準でインストールされているrubyのgemを確認してrailsのgemが無いとエラーを出していたらしい。

## 参考サイト
[Shellをzshにし

元記事を表示

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テーブル

元記事を表示

OTHERカテゴリの最新記事