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

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

AIRBNBのようにGOOGLEMAPをWEBに追加

# 追加背景
今自分で習いながらAIRBNBのような民泊シェアリングエコノミーサイトを作っているので、その中でもGOOGLEMAPの位置表示機能を追加する手順をシェアできればかと思います。今回は部屋の掲載ページに載せるので主にROOM関連のファイルで編集していきます。

# GEM追加

“`Gemfile.
gem ‘geocoder’, ‘~> 1.4’
“`
bundle install

#DB migration
rails g migration AddFieldsToRoom latitude:float longitude: float (掲載した部屋のページに表示したいのでこの場合ROOMのDBに追加)
rails db: migrate

## rooms table
|Column|Type|Options|
|——|—-|——-|
|home_type|string|null: false|
|room_type|string|null: false|
|accommodate|integer|null: false|
|bed_room

元記事を表示

ローカル環境でserverが起動しない時の対処法 PG::ConnectionBad

#結論
_DBを起動させていないから_

スクリーンショット 2020-05-25 9.48.44.png

#解決法
“`ruby:terminal
brew services start postgresql
“`

※postgresqlのところはそれぞれ使っているDBを指定

“`ruby:terminal
bin/rails s
“`
###開発環境
`Homebrew 2.2.17`
`ruby 2.5.1p57`
`Rails 5.2.4.3`
`psql (PostgreSQL) 12.3`

元記事を表示

Railsでよく使うRubyのメソッド

# はじめに
Ruby on Railsをメインに扱うWeb受託開発企業に転職し、約4ヶ月が経過しました。
初心者ながらにプロジェクトにアサインして頂き苦し楽しい毎日を過ごしております。
開発していく中でよく使うなーと思うRubyのメソッドをまとめていきます!

# メソッド一覧
### if
説明不要の条件分岐メソッド。
true,falseで評価し、実行する処理を分岐させる。

“`
if 条件式
ifに対するtrue処理
elsif 条件式
elsifに対するtrue処理
else
falseの処理
end
“`

### each
配列の要素を繰り返しの形で取得するメソッド。
RailsではDBのレコードを順に取得する際に利用しています。

“`
[1, 2, 3].each do |i|
p i
end
出力
1
2
3
“`

### map
こちらもeachメソッドと似ていますが、
DBのレコードを取得する際にカラム指定する際に利用しています。

例えば以下のテーブルがあった場合

“`
Usersテーブル
id |name | a

元記事を表示

Rubyのバージョンを変えたらbundle installができなくなった

#事件発生
ある日のことだった

“`
$ bundle install
“`
を入力すると

“`
Traceback (most recent call last):
~/.rbenv/versions/2.5.0/bin/ruby: invalid option -: (-h will show valid options) (RuntimeError)
“`

ええええ何だこれ!
他のコマンドも受け付けてくれない、何をしでかしたんだ…
#これまでを振り返ってみよう
自分が致命的な何かをしてしまったはず…
##Ruby : 2.7 で開発していた
“`
(自分の環境)/vendor/bundle/ruby/2.7.0/gems/active_hash-3.1.0/lib/associations/associations.rb:22: warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
(自分の環境)/ven

元記事を表示

[rails]Rspecで単体テストを行おう!

テストには、単体テストと統合テストの2種類がある。

-単体テスト
 1つのプログラムに対して、正常に動くかのテスト。
 (例)モデルクラスごと

-統合テスト
 1蓮の処理に関するテスト。
 (例)ユーザーの新規登録用画面から値を入力、送信して、データベースにレコードが追加されるまでの流れ

#「Rspec」と「factory_bot」の導入

「Rspec」はテスト行うためのjem、
「factory_bot」はテストを行う際に一時的に情報を作成してくれる
お助けツールです。

そのため、まとめてインストールしましょう。

①jemno
インストール

“`:Gemfile
group :development, :test do
gem ‘rspec-rails’
gem ‘factory_bot_rails’
end
“`

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

②RSpecの最低限必要なファイル/ディレクトリ構成をRailsにインストール

“`:ターミナル
$ rails g rspec:install
#> create

元記事を表示

Rails6.0でselectboxの複数選択をおしゃれにするJavaScriptライブラリ「select2」の導入方法

# はじめに
皆様、こんにちは!
佐久間まゆちゃんのプロデューサーの@hiroki_tanakaです。

先日、Rails6.0系でselectboxの複数選択をおしゃれにするプラグインのselect2を導入することがありました。
その際にRails5系までの導入方法との違いに少しハマったので、調べたことをまとめました。

# 利用環境
– Ruby 2.6.6
– Rails 6.0.2

# select2とは
select2とはHTMLのselectboxのデザインをおしゃれにするJavaScriptのライブラリです。
公式サイトはこちらです。→[select2](https://select2.org/)
単一選択のselectboxのUIだけでなく、複数選択のselectboxも簡単に実装する事ができるプラグインです。

#### [公式サイト上のサンプル](https://select2.org/getting-started/basic-usage)
– select2導入前
![image.png](https://qiita-image-store.s3.ap-nor

元記事を表示

ActiveModel::Serializerのテストでつまづいたこと

### はじめに
[ActiveModel::SerializerのRspec](https://qiita.com/mightysosuke/items/68ba860624973db3c8ca)でテストの書き方の例を挙げました。
ですが、他のSerializerのテストを書く時につまづいたことがあるので、投稿します。

### ソースコード

今回の例は、ArticleとCategoryが多対多の関係にあり、`article_category.rb`という中間モデルを持っているとします。

“`rb:article.rb
class Article < ApplicationRecord has_many :article_categories has_many :categories, through: :article_categories end ``` ```rb:article_serializer.rb class ArticleSerializer < ActiveModel::Serializer attributes :id, :title h

元記事を表示

【Rails】モデルの使い方がイマイチわからない…(クラスメソッドとか意味不m…)

# 経緯
現在、とあるプログラミングスクールに通っているのですが、検索機能(検索窓)を実装する際に、モデルとコントローラーを使い分けるように言われました。
えー… 全部コントローラーでいいじゃん…(もちろん、今では積極的に分けて使用していますよ!)

**・モデルからデータを取得したり、保存したり単純な処理のみ記載**
**・モデル取得した値に複雑な処理を行うものを記載**
というイメージで使い分けています。

ただ、何故**モデルで設定した『処理のカタマリ』**をコントローラーで使えるのか理解できなかったので使いたくなかった、、いや使えなかったんですよね。
(この記事は検索機能の解説をするための記事ではありません。あくまでモデルの使い方について私の頭の整理です。)

# 検索機能の実装

“`:models/tweet.rb(モデル)
class Tweet < ApplicationRecord validates :text, presence: true belongs_to :user has_many :comments def self.search

元記事を表示

[rails]よく使うバリデーションまとめ

バリデーションの日本語にするには下記参照#

deviseを日本語表記にする。
https://qiita.com/ryuuuuuuuuuu/items/48dec280cf8925968c65

deviseを日本語化する
https://qiita.com/you8/items/921e0dd1210eb0d158df

Railsのバリデーションエラーのメッセージの日本語化
https://qiita.com/Ushinji/items/242bfba84df7a5a67d5b

#空でないこと

“`:model
validates :title, presence: true
“`

ちなみに、マイグレーションファイルに記載する下記の

“`
null: false
“`
も同じく空でないこと、という意味ですが
それぞれDB側への制限と、アプリケーション側への制限になるので
両方ともかけましょう!

#重複禁止

“`:model
validates :email, uniqueness: true
“`

#長さ

“`:model
val

元記事を表示

忘れがちなrubyの基礎知識を復習

## はじめに
改めてrubyの基本的な記法を復習するための記事になります。

## ・あるオブジェクトを文字列に変換するto_sメソッド
“`
# 文字列→文字列
‘1’.to_s # => “1”

# 数値→文字列
1.to_s # => “1”

# nil→空白の文字列
nil.to_s # => “”

# 真偽値true→文字列の”true”
true.to_s # => “true”

# 真偽値のfalse→文字列の”false”
false.to_s # => “false”
“`

## メソッドの呼び出し方

“`
# 通常の書き方
オブジェクト.メソッド(引数1, 引数2, 引数3)
# カッコを省略しても良い
オブジェクト.メソッド 引数1, 引数2, 引数3
# 引数がない場合
オブジェクト.メソッド
“`

## 変数名の作り方
“`
# 変数名はスネークケースが望ましい
first_name = user.first_name

# キャメルケースは慣習的に使用しない
firsfName = user.first_na

元記事を表示

【Rails】fields_forが表示されない

今回は、「fields_for」で「file_field」を使用しようとしたところ、ビューに反映されずに苦戦したので、備忘録として解決した方法を記載します。
同じ悩みを抱えた方の一助になると幸いです。

※この記事ではfields_for とaccepts_nested_attributes_for を使ったフォーム作成手順を解説するものではありません。

#今回登場するモデル
・(親)postモデル
・(子)imageモデル

postモデルとimageモデルaccepts_nested_attributes_forでアソシエーションしております。

# 想定
ツイッターやFBのようなSNSを作成。
「form_for」を用いて投稿フォームを作成するところです。

文章 →postモデル
写真 →imageモデル
に保存したく、以下のようにビューを作成しました。

# 間違えたコード
(わかりやすいように関係箇所のみ抜粋してます)

“`:haml
.form__contents
= form_for @post, id: “new_post” do |f|
.titl

元記事を表示

【環境構築 Mac】Ruby on Rails (+Webpackerでエラーの対処)

#初めに
Ruby on Railsの環境構築を行いましたので、記録します。

【構築環境】
・Rails6
・Ruby 2.6.3

【マシンスペック】
・macOS Catalina
・バージョン 10.15.3
・iMac(retina 4K, 21.5-inch,2019)
・プロセッサ 3 GHz 6コアIntel Core i5
・メモリ 8GB

【使用エディター】
VScode
(https://azure.microsoft.com/ja-jp/products/visual-studio-code/)

#構築手順
##Command Line Toolsのインストール
こちらでは、AppleIdが必要になります。
Id・パスワードを忘れている場合は事前に準備してください。

①Appleのdeveloperアカウントページにログイン
https://developer.apple.com/account/#/welcome

②See more downloadsからダウンロードリストページへ
https://developer.apple.com/downloa

元記事を表示

【Rails】ぼっち演算子について

# ぼっち演算子「&.」
レシーバであるオブジェクトが
・nilの場合nilを返す
・nilでない場合、その後の処理を行う

# 書き方
ぼっち演算子の使い方は
「オブジェクト&.メソッド」
になります。

sessions_controller.rbを例に使い所をみていきます。

“`app/controller/sessons_controller.rb
class SessionsController < ApplicationController def new; end def create user = User.find_by(email: params[:session][:email].downcase) if user&.authenticate(params[:session][:password]) log_in user redirect_to user   else flash.now[:danger] = 'Invalid email/password combination'

元記事を表示

100日後に1人前になる新人エンジニア(4日目)

#100日後に1人前になる新人エンジニア(4日目)
先日の記事はこちらから
[100日後に1人前になる新人エンジニア(3日目)](https://qiita.com/akilax/items/6c9ba50bfb622279a2e6)

どうもこんばんは。早くも週末が終わってしまいますね。
今日も今日とて更新をしていきます。
今まであまりRailsについて書いてこなかったので
今日はRailsのFormに関して書いていこうと思います。

##Railsのフォーム
なんかいくつかの種類があるんだなあって感じで学んできたけど
いい機会なのでしっかりまとめてみようと思います。

**form_for**
**form_tag**
**form_with**

この3つですね。とりあえずTutorialでは言われた通り書いてみて
うまくいったなって感じでしたが、それではダメだと思ったので一つずつ見ていきます。

##form_for
関連するモデルが用意されている場合はform_forでモデルを渡す。

“`
<%= form_for @user do |form| # @userというイン

元記事を表示

【開発ログ⑯】テーブル変更後のHeroku再デプロイ

# 前提について
はじめまして、
プログラミングスクールに通ういりふねと申します。この記事は、スクールの課題である個人アプリの開発の記録を書くことで、自身のアウトプットに利用しています。もし、読んでいただけた方がいましたら、フィードバックをしていただけたら嬉しいです。

開発するのは「有給休暇管理ツール」です。仕様は[過去記事](https://qiita.com/iczo32/items/97ad7d4baa985b3b99ca)をどうぞ。

アプリはデプロイまで行いますが、サービスとして提供するものではありません。あくまでも自学習の一環ですので、ご理解下さい。では本題へどうぞ。

# 今回の実施内容
前回までで有給休暇管理ツールのindex画面にあるリンクボタンには全てリンク先が設定できました。その後記事にはしていませんが、デプロイまで完了し、無事にスクールの発表会が終了しました。今回はデプロイ後にテーブルのカラムを追加し、再デプロイまでの流れを書きます。

– ローカルの編集
– 本番環境でのマイグレーション
– ビューの確認

# 開発環境
前提として開発環境を書くことを最近覚

元記事を表示

【RSpec】ArgumentError: wrong number of argumentsエラーが出たら、変数の命名を気にした方がいいかもしれないのですね

##はじめに
“`Controller specs“`に関する記事です。
共通化を行うために変数定義を行った際、命名を適当に行ったら沼ったので備忘録として残しておくことにします!

##環境
ruby 2.6.5
rails 5.2.4.2
rspec 3.7
capybara 2.15
factory_bot_rails 4.11

##エラー内容

####エラー修正前のコード

“`ruby:spec/controllers/posts_controller_spec.rb
require ‘rails_helper’

RSpec.describe PostsController, type: :controller do

context “ログインを必要としないアクション” do
.
.
.
end

context “ログインを必要とするアクション” do

let(:user) { FactoryBot.create(:user) }
let(:login_user) { login(user) }
let(:p

元記事を表示

本番環境(AWS)へ初期データ投入

# 背景
初めてのポートフォリオ作成時に、大量に存在する初期データを本番環境に流すのになかなか手こずったため、備忘録として記録しています。

# DB内の初期データをseed.rbに移行する( gem seed_dump )
自分の場合、開発環境ではmysqlDBにsequel proを使って直接初期データを記入していたため、seed_dumpというgemを使って、db/seed.rbにデータを移す必要がありました。seed.rbに初期データを記入することによって、本番環境でも同様にデータを扱うことができるため、まずはこの作業を行う必要がありました。

“`:Gemfile
gem ‘seed_dump’
“`
“`:tarminal
$ bundle install
“`
インストールできたら、今回はTweesテーブルに書いてあるデータをすべて移したかったため、**MODELS=モデル名**で書き出すテーブルを指定します。また、**FILE=db/seeds/tweet.rb**として、作るファイル名を指定しました。

“`:tarminal
$ bundle exec r

元記事を表示

Ruby on Rails Elastic beanstalkへのデプロイ(IAM権限変更編)

#概要
Ruby on Rails で作ったアプリケーションをデプロイ環境の構築をElasticBeanstalk(以下EB)を使用して、最短で行います。
IAM権限変更編・環境構築編・EBデプロイ編で分けます。
あくまで、パッとデプロイすることに重点を置くので、厳しい管理が必要な方の場合はご了承ください。

#目次
[IAM権限変更編]()
[環境構築編](https://qiita.com/TQO/items/797fe2362b05f6021b63)
[EBデプロイ編](https://qiita.com/TQO/items/0dff383e5dfea0fe462d)

#IAM権限変更編
##ユーザーの作成 → 必要な権限の付与
root権限で実行するのはセキュリティ上よろしくないので、適当なuserを作成して以下の権限を振っていきましょう。
・AWSElasticBeanstalkFullAccess
・AmazonRDSDataFullAccess
・AWSCloudFormationFullAccess
・AWSCloud9Administrator(cloud9使用の方

元記事を表示

Ruby on Rails Elastic beanstalkへのデプロイ(環境構築編)

#概要
Ruby on Rails で作ったアプリケーションをデプロイ環境の構築をElasticBeanstalk(以下EB)を使用して、最短で行います。
IAM権限変更編・環境構築編・EBデプロイ編で分けます。
あくまで、パッとデプロイすることに重点を置くので、厳しい管理が必要な方の場合はご了承ください。

#目次
[IAM権限変更編]()
[環境構築編]()
[EBデプロイ編](https://qiita.com/TQO/items/0dff383e5dfea0fe462d)

#環境構築編

##開発環境について
Ruby・・・2.6.3
Rails・・・5.0.7.2
Bundler・・・2.1.4以上
OS・・・amazon Linux(cloud9)
Railsは、5.2以降はSECRET_KEYのver管理のために少し面倒だったこと、6.0以上はまだまだ新しく(自分が追いつけていない点もあるのですが)わざわざverを上げるメリットがなかったため、ver5.0.7.2を使用しています。

基本、Linuxなので、Macでも同様の操作ができるかと思います。
ただ、cloud9

元記事を表示

Ruby on Rails Elastic beanstalkへのデプロイ(EBデプロイ編)

#概要
Ruby on Rails で作ったアプリケーションをデプロイ環境の構築をElasticBeanstalk(以下EB)を使用して、最短で行います。
IAM権限変更編・環境構築編・EBデプロイ編で分けます。
あくまで、パッとデプロイすることに重点を置くので、厳しい管理が必要な方の場合はご了承ください。

#目次
[IAM権限変更編](https://qiita.com/TQO/items/1d66a6f986d96bd9cc12)
[環境構築編](https://qiita.com/TQO/items/797fe2362b05f6021b63)
[EBデプロイ編]()

##EBへデプロイ

1.まずは初期設定を行います。
eb init (再設定の場合は eb init -i)

“`ruby:myapp
Select a default region
1) us-east-1 : US East (N. Virginia)
2) us-west-1 : US West (N. California)
3) us-west-2 : US West (Oregon)
4) e

元記事を表示

OTHERカテゴリの最新記事