Rails関連のことを調べてみた2020年07月31日

Rails関連のことを調べてみた2020年07月31日

Rails 本番環境で画像が読み込まれないエラー

##この記事について
本番環境でbackground-imageの画像を読み込む時にはエラーが出ないのに、image_tagのところだけでエラーが出てしまっていたので、そのエラー解決方法について

##環境
・Ruby 2.6.6, Rails 6.0.3.2
・Docker,Docker-compose(開発環境)
・AWS/本番環境(EC2, RDS, VPC, EIP, Route53, IAM, S3)

##参考URL
https://stackoverflow.com/questions/49440304/rails-asset-is-not-present-in-asset-pipeline-when-using-image-tag
この人と全く同じ現象になってました。

##出ていたエラー
“`ruby:qiita.rb
ActionView::Template::Error (The asset “chat_example.jpeg” is not present in the asset pipeline.):
“`
asset へのパイプラインがうまく

元記事を表示

Controller作成と同時にアクションとviewファイルを作成(rails)

#Controller作成と同時にアクションとviewファイルを作成
railsではcontrollerを作成する際、同時にアクションとviewファイルを作成することができます。
実際に手動でアクションやviewファイルを作成する手間を省くことができます。
以下がコマンドの型です。

“`
$ rails g controller コントローラ名 アクション名
“`

例えば、book controllerを作成し、newアクションを追加したい場合、、、

“`
$ rails g controller book new
“`

こんな感じになれば、成功。

“`
[vagrant@localhost sample_app]$ rails g controller books new
Running via Spring preloader in process 25819
create app/controllers/books_controller.rb
route get ‘books/new’
invoke erb

元記事を表示

カラムの追加と削除

#カラムとは?
カラムとはデータベースの中のテーブルが持つ要素です。
例えば、ユーザーというテーブルの中の「名前、生年月日、住所」などの項目をカラムと言います。

#カラムの追加
新たに別のカラムを追加したいということはよくあると思います。
そんなときは以下のコマンドでカラムを追加です。

“`
$ rails g migration Addカラム名Toテーブル名 カラム名:型名
“`

例えば、「User」というテーブルに「name」というカラムを追加したい場合、

“`
$ rails g migration AddNameToUsers name:string
$ rails db:migrate
“`

ここで「rails db:migrate」を忘れてしまうと、テーブルへ反映されませんので、
気をつけてください。

#カラムの削除
カラム名を間違えて登録した時など、カラムを削除したいこともあると思います。
カラムを追加する時とあまり変わりません。

“`
$ rails g migration Removeカラム名Fromテーブル名 カラム名:型名
“`

「Us

元記事を表示

[Rails] ActiveModel::Attributesの使い方(配列化やネストしたhashの取り扱いなども)

ActiveModel::Attributesの使い方について使い方をまとめてみたいと思います。他の方の記事も少しだけありましたが、配列の作り方とか、ネストしているhashをオブジェクト化するやり方があまりまとまってなかったので初投稿してみることにしました。

## サマリ
記事の下まで読むと、ネストしているhashをActiveModel::Attributesを使ってきれいにオブジェクト化することができます。こんな感じです。

“`ruby
hash = {name: “徒然草”, price: 1000, authors: [{name: “兼好法師”, age: 35}, {name: “健康男児”, age: 20}]}
book = Book.new(hash)
book.name
# => “徒然草”
book.authors.class
# => Array
book.authors.first.class
# => Author
book.authors.first.name
# => “兼好法師”
book.authors.first.age
# => 35
`

元記事を表示

【Rails】エラー解決 Unsupported argument type: 1 (Integer)

###はじめに

今回は
`Unsupported argument type: 1 (Integer)`
こんなこと言われた時の対処方を記述します
お決まりのタイプミスによって発見したエラー文です笑

###解決策

***intger型の1という引数は期待してません***、という感じのエラー文です。

という事は違う物を期待してるところで整数の1を渡してしまっているという事です。

“`rb
User.find_by(session[:user_id])
“`
犯人はこれでした!

`find`と書くべきところを間違えて`find_by`と書いてますね、なので`find_by`のカラム名を書くところに`session[:user_id]`が入っているせいで、今回は[1]という整数が入ってるのでそのまんま[1]って名前のカラムを探しに行こうとしてしまった、そんな感じみたいですね。

>↓こんな感じの事ですね!

>“`rb
>User.find_by(1)
>“`

という事で

“`rb
User.find(session[:user_id])
“`
`find`に書

元記事を表示

herokuのエラー

##今まで出たherokuのエラー
その1

“`
error: src refspec master does not match any
“`
解決方法

pushするブランチを間違っていた。作業しているブランチがdevelopだったのでdevelopと書きその後に:masterとつけるのが決まりみたい。

“`
$ git push heroku develop:master
“`

元記事を表示

railsでmodelを作成する方法

#railsでmodelを作成する方法
modelはデータベースとのやりとりを行ってくれます。
modelを作成するコマンドはこんな感じです。

“`
$ rails g model モデル名
“`

モデル名の命名規則は、「User」のように、英数字の単数形で指定します。
また、先頭は必ず英大文字で記述します。

実際に、modelを作成するためのコマンドを打つとこんな感じです。

“`
$ rails g model User
“`

成功すると、、、

“`
$ rails g model User
Running via Spring preloader in process 4271
invoke active_record
create db/migrate/2020072951856_create_users.rb
create app/models/user.rb
invoke test_unit
create test/models/user_test.rb

元記事を表示

railsでルーティングを設定する方法

#railsでルーティングを設定するには
routing(ルーティング)では、ユーザが特定のURLにアクセスした時に、
どのコントローラのどのアクションに処理を振り分けるかを定義します。
ルーティングは、URLとアクションを結びつける役目をしています。
例えば、「あるURLにアクセスがあった時に、homeコントローラのtopアクションの処理を振り分ける」という定義を、ルーティングに記述します。

ルーティングの設定は、configフォルダ内のroutes.rbファイルに記述します。
routes.rbファイルは、Railsアプリを作成するときに自動作成されるファイルです。
こんな感じです。

“`
HTTPメソッド ‘URL’ => ‘コントローラ#アクション’
“`

※HTTPメソッドについてはこちらの記事で説明しています。
https://qiita.com/yusuke1209kitamura/items/e29787bc2920a656d505

わかりやすく、実際に書いてみます。

“`
Rails.application.routes.draw do
get ‘

元記事を表示

Controllerにアクションを追加する方法(rails)

# Controllerにアクションを追加するには
controllerを作成したあとは、アクションを記述する必要があります。
アクションとはコントローラに定義されている処理内容です。ユーザーが実際に呼び出して使います。

アクションはcontrollerファイルに対して、こんな感じで記述します。

topページを表示したい場合
def~の後は表示したいviewページの名前になります。

“`
class HomesController < ApplicationController def top end end ``` defはdefine(定義する)を意味します。

元記事を表示

爆速で新しいコードベースをマスターする

>こちらの記事は、[John Sonmez](https://medium.com/@jsonmez) 氏により2018年9月に公開された『 [ Master a New Codebase in Record Time](https://medium.com/@jsonmez/master-a-new-codebase-in-record-time-d7b7129dc178) 』の和訳です。
本記事は原著者から許可を得た上で記事を公開しています。

# 爆速で新しいコードベースをマスターする

君は新しいチームに入った。 プロジェクトのコードベースは巨大だ。 どこから手を付ければいいのかわからない。 君は馬鹿だと思われたくないし、チームメイトは皆、自分の仕事で忙しい。 さて、どうやったら、経験レベルに関係なく、全く初めてのコードベースで生産性を高めることができるものか?それも素早くだ。

これは開発者であれば誰もが通る道だ。 未知のコードベースを持つ既存のプロジェクトに飛び込むことは定期的に起こる。 転職したばかりなのか、同じ会社内でチームを切り替えただけなのかは関係なく、やらなければ

元記事を表示

バリデーションエラーの表記を日本語表記に変更する方法

学習を進めてる中“Name can’t be blank“等のバリデーションエラーを日本語に変更する方法を学んだのでまとめようと思います。

まず日本語の設定にするためのgemをインストールします。

“`ruby:Gemfile
gem ‘rails-i18n’
“`
これだけではまだ変更は完了していません。
config/application.rbに以下の一文を追記します。これにより、サーバ再起動後にエラーメッセージが日本語化されます。

“`ruby
config.i18n.default_locale = :ja
“`

これにより、サーバ再起動後にエラーメッセージがこのように表示されるはずです。

“`
Nameを入力してください。
“`
カラムの日本語化自体もできるみたいですが今後実装する際に追記したいと思います。

ちなみに。。。。。

###i18nとは

[Wikipedia](http://qiita.com)によると・・・

>情報処理における国際化と地域化(こくさいか と ちいきか)は、ソフトウェアを開発した環境とは異なる環境、特に外国や異文化

元記事を表示

RSpecの単体テストにて”translation missing: ja.activerecord.○○”というエラーが出たときの対処法

Deviseを日本語化したときのエラー。エラー画面はこんな感じ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/484801/6a887d1b-3688-0d46-a527-5d7299cbb4bb.png)

この辺の記事を参考にしました。
・Devise日本語化後の「translation missing」に対処する

・translation missing: ja.activerecord.errors.models.hoge.attributes.base.restrict_dependent_destroy.many の対処方法
https://qiita.com/moperon/items/da8cd6e674dba2552c42
・Createの際のエラーUser translation missing: ja.activerecord.errors.model

元記事を表示

[Rspec]Fabricateの基本的な使い方まとめ

なんとなく使えてしまうFabricateですが、ふとしたきっかけでちゃんと理解したいなと思ったのでまとめました。

## Fabricateとは
オブジェクト生成ライブラリです。
テストで使用するためのオブジェクトを簡単に作成できます。

## 使い方
非常にシンプルで、モデルの属性に無難なデフォルト値を設定します。
サンプルで`person`というオブジェクトを定義しました。

“`ruby
Fabricator(:person) do
name “Niki”
age 23
end
“`

### 生成メソッド
生成メソッドは3種類あります。よく使うのは`Fabricate.build`と`Fabricate`。

“`ruby
Fabriate(:person)
# newしてsaveしたものを返す
Fabricate.build(:person)
# newだけしてsaveはしない
Fabricate.attributes_for(:person)
# 属性のHashを返す
“`

一見`Fabricate.build`は必要なくない?となりますが、これは間違い

元記事を表示

postgres sqlコマンド 自分用

#postgresqlよく使うコマンド
※#から始まるコマンドはpsql内で、$から始まるコマンドはpsql外で実行するコマンドとなる。

##バージョンを確認する

“`
$ psql —version
# select version(); 
“`

##ヘルプを表示

“`
$ psql –help
# \?
# \h
“`

#データベース

##データベースに入る

“`
$ psql
“`

##ユーザーを指定してデータベースに入る

“`
$ psql -U
“`

##データベースから出る

“`
# \q
“`

##データベースを起動

“`
$ postgres -D /usr/local/var/postgres
“`

##データベース一覧表示

“`
$ psql -l
# \l
“`

##データベースの切り替え

“`
# \c
# \connect
“`

##データベースを削除

“`
# drop data

元記事を表示

Railsでslimを使う

#プログラミングの勉強日記
2020年7月30日 Progate Lv.226

#概要
 [こちらの記事](https://qiita.com/mzmz__02/items/61423e7259c4624f3010)で扱ったgemのslimを説明する。slimはHTMLよりもコードを早くきれいにシンプルに書ける。erbと同じで、Rubyを埋め込むこともできる。Hamlと似ていて、slimには閉じタグが存在しないので、コードを簡単かつすっきり書くことができる。

#使い方
 slimを使うためにGemfileを編集する。

“`:Gemfile
gem ‘slim-rails’
“`
 Gemfileを編集したら、hamlをインストールする。

“`:ターミナル
bundle install
“`

 これで、`index.html.slim`といったビューファイルの拡張子に`slim`を使えるようになる。

##すでにあるerbファイルをslimファイルに変えたい場合

“`:Gemfile
gem ‘html2slim’
“`

“`:ターミナル
# erbファイルを

元記事を表示

コントローラーでのデータ検索等

#データの絞り込み
データの絞り込みは下記の構成

例)Task.all.first
Task = 起点
all = 絞り込み条件
first = 実行部分

##起点

処理対象のモデルのクラス

##絞り込み条件

|メソッド | 効果 |
|:—————–|:——————|
| where | 特定のレコードの検索 |
| order | 検索結果の並び順を指定 |
| joins | 他のテーブルとのJOINを指定 |
| group | 指定したカラムの値を基準にデータをグループ化 |
| select | 指定したからむだけを属性として取得する |
| limit | 取得個数を制限する |
| distinct |取得するカラムの値が一致しているデータは除外してデータを取得 |
| all

元記事を表示

Controllerを作成しよう

#Controllerを作成する
コントローラでは、ユーザーのリクエストを受けてModelと連携したり、
どの画面(View)を表示するかを制御しています。
ユーザーがURLにアクセスしたときに、リクエストを最初に受け取るのがコントローラです。
受け取ったリクエストを元にして、Modelからのデータを、対応するViewに渡して画面を表示させます。

具体的には、以下のような制御を行っています。

Modelとやり取りする
Viewに渡すインスタンス変数を定義する
表示するViewファイルを指定する

controllerを作成するのは以下を実行するだけです。
gはgenerateの略称です。

“`
$ rails g controller コントローラ名
“`

ただ、一つだけ注意があります。
コントローラー名は複数形になります。こんな感じです。

“`
$ rails g controller homes
“`

成功するとこんな感じになります。

“`
[vagrant@localhost sample_app]$ rails g controller homes
Ru

元記事を表示

MVC(Model View Controller)を理解しよう

#MVC(Model View Controller)とは?
railsはMVCという考え方で構成されています。
全てのコードを同じ場所に書いてしまうと、コードが複雑になるため、
railsでは、保守性を維持するために、Model、View、Controllerの3つの処理パターンに分けて管理しています。

###model
データを扱う部分です。
データベースに対して、データの登録や取得、更新、削除などの処理を行います。

###view
PCの画面に関わる部分です。
HTMLを読み込み、ブラウザに表示させるためのものです。

###controller
modelとviewの中間に位置します。
ユーザーからのリクエストを受けて、Modelと連携したり、どの画面(View)を表示するのかといったことを制御します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/681053/9ffd80e8-a86c-8a2f-8d8d-6573020739eb.png)

元記事を表示

Rubyで「ある期間の毎月1日」をDateオブジェクトの配列として取得する方法

Rubyの小ネタです。

## お題

2020年4月1日から2021年3月1日まで、1年分の「xxxx年xx月1日」のDateオブジェクトを配列として取得するコードを書いてください。

イメージとしてはこんな感じです。

“`ruby
# 見やすいように文字列の配列にしていますが、本当はDateオブジェクトの配列を取得するのがゴールです
[
“2020-04-01”,
“2020-05-01”,
“2020-06-01”,
“2020-07-01”,
“2020-08-01”,
“2020-09-01”,
“2020-10-01”,
“2020-11-01”,
“2020-12-01”,
“2021-01-01”,
“2021-02-01”,
“2021-03-01”
]
“`

## 解答例

こんな感じで書けます。

“`ruby
require ‘date’
start_date = Date.parse ‘2020/04/01’
end_date = Date.parse ‘2021/03/01’
(start_dat

元記事を表示

作業環境をcloud9からVScodeに変更した

Ruby on railsでアプリを作成し、ec2環境までのデプロイが完了した。
ここまでの作業環境としてAWSのcloud9を利用してきた。
作品のレベルを上げるためにdockerの導入を検討し、それならば、作業環境をcloud9から卒業しVScodeに移行しようと考えた。

docker.fileとdocker-compose.ymlを作成し、無事にdocker環境下でもアプリの動作が確認できた。

git hubでpushし、cloud9にgit pullでファイルを同期させたところ、cloud9環境下でエラーが発生した。

原因はdocker導入にあたり以下の変更を加えたことである。

“`ruby:database.yml
default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password: <%= ENV.fetch("MYSQL_PASSWORD", "password")

元記事を表示

OTHERカテゴリの最新記事