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

Rails関連のことを調べてみた2020年04月16日
目次

【RSpec】 単体テスト(モデル・コントローラー)の記述方法について

## Qiita投稿の背景
Railsアプリのテストを実施する時にRSpecを使用しています。
しかし、RSpec特有のコマンド等を都度ググることになっているため、自分の備忘録、アウトプットによる知識の定着も兼ねて記録します。

## この記事の対象者
– Rails初心者の方
– RSpec初心者の方

## 環境
– ruby 2.5.1
– Rails 5.2.4.1

## Gemをインストール
“`:Gemfile
group :development, :test do
gem ‘rspec-rails’
gem ‘factory_bot_rails’
gem ‘rails-controller-testing’
end

group :development do
gem ‘web-console’
end

group :test do
gem ‘faker’
end
“`

上記のように、各Gemは記述する場所に気をつけましょう。
単体テスト(モデル、コントローラー)を実施するために必要な全てのGemです。

“`:ターミナル
$ bundle ins

元記事を表示

Dockerでlocalhostへのアクセスが遅い時の対処法

現在、ポートフォリオを作成している途中のゆーた(@onoblog)です。

テンプレートを作成している中、Docker環境で、sassを使ったり、bootstrapを使ったりしています。

1つ問題がありました、遅い…

コードを修正し、よしこれなら大丈夫だろうと意気揚々とコードを表示させようとするのですが、遅いのです。
遅いならいいのですが、このようにタイムアウトしてしまうときがあります。

スクリーンショット 2020-04-16 9.11.40.png

今まで、読み込みが遅いなら
Qiitaの記事を書いたり、
wantedlyのプロフィールを書いたりしているので、
時間は損をしていないのですが、そろそろ改善したいと思います。

同じような地味なストレスを持っている方の助けになれば、幸いです。

##環

元記事を表示

Rails6.0でRailsチュートリアル(Rails5.1)を完了させる時に詰まるポイント

# はじめに

Rails入門として非常にメジャーな[Ruby on Rails チュートリアル](https://railstutorial.jp/)ですが、Rails5.1と、3年前のバージョンがベースになっています。
それと比較し、Railsの最新バージョンは記事執筆現在6.0.2です。

マイナーバージョンならまだしも、メジャーバージョンも5→6となっているため、これからRailsを学ぶ方はRails6をベースに学習したいのではないでしょうか。

というわけで、Rails5.1で書かれたチュートリアルを、Rails6.0で動かした際に詰まるポイントをまとめました。
ですが、このページを常に開きながら、詰まった時にすぐに見て…というやり方はあまりオススメしません。
なぜなら詰まった時にこそ、エラーを読んでいろいろ調べることで得られる知識も多いためです。
詰まった際に15分、20分と解決しなかった際に本記事を参照いただけると幸いです。

なお、大前提、AWS Cloud9の構築です。

# ■1章

## sqlite3のバージョンエラー

Cloud9の環境構築時にPlatfor

元記事を表示

Rspec で ENV の環境変数をモックしたいが before で上書きしてもクリーンはしてくれない #Rails #Ruby #rspec

“`rb
# $ FOO=foo BAR=bar rspec example_spec.rb

RSpec.describe do
# OK
describe do
it { expect(ENV[‘FOO’]).to eq ‘foo’ }
it { expect(ENV[‘BAR’]).to eq ‘bar’ }
end

# OK
describe do
it { expect(ENV.fetch(‘FOO’)).to eq ‘foo’ }
it { expect(ENV.fetch(‘BAR’)).to eq ‘bar’ }
end

# OK
# Mock hash
describe do
before do
allow(ENV).to receive(:[]).and_call_original # necessarry
allow(ENV).to receive(:[]).with(‘FOO’).and_return(‘mocked foo’)
end

i

元記事を表示

消費税改正に備えて

## はじめに
最近、COVID-19の流行で本当に大変なことになっています。
経済への影響もかなり大きく、その対策として消費税改正の話が出たり引っ込んだりしています。

消費税改正…もし行われることがあれば、速やかに従いたいところです。
自分の関わっているサービスでは、サイト内いくつかの場所で税込価格を表示していますが、消費税の処理の記述も複数箇所に書かれており、速やかな対応をするのがちょっと大変そうです…。

…というわけで、こうやったら税処理の部分をうまく書けるのではないか?ということをまとめました。

### 理想の姿
消費税を扱うクラスで`attr_with_tax`によって属性を指定してあげると、`属性_with_tax`メソッドが使えるようになり、これが処理日なり指定日で自動で税率が変わってくれるようにしたいです。

“`ruby
class SampleItem
extend WithTax

attr_accessor :price
attr_with_tax :price

def initialize(price)
@price = pr

元記事を表示

お問い合わせフォーム作成

今回はこの様なお問い合わせフォームの作成を致します。
投稿された内容がG-Mailに届く様になっています。

[![Image from Gyazo](https://i.gyazo.com/6cd4c8d4f0ab4415789da1342b392b2a.gif)](https://gyazo.com/6cd4c8d4f0ab4415789da1342b392b2a)

こちらのサイトを参考にさせていただきました。
https://remonote.jp/rails-confirm-form
https://qiita.com/annaaida/items/81d8a3f1b7ae3b52dc2b

## STEP1
まずルーティング、コントローラーを作成

config/routes.rb

“`
Rails.application.routes.draw do
get ‘index’ =>’messages#index’
post ‘confirm’ => ‘messages#confirm’
post ‘done’ => ‘messages#done’

元記事を表示

【Ruby on Rails】chromedriver-helperからwebdriversに乗り換えよう

https://qiita.com/jnchito/items/f9c3be449fd164176efa
を参考にした備忘録

概要

chromedriver-helperがサポート終了。
webdriversに乗り換えよう!の話。

やり方

“`ruby:Gimfile
group :test do
# …
– gem ‘chromedriver-helper’
+ gem ‘webdrivers’
“`
コレだけ。
ちなみに’chromedriver-helper’依存するコードも削除すること。

元記事を表示

bootsnapのエラー = leveldbが原因かも?

#はじめに
どうもDockerを十分理解しないまま、雰囲気に任せてサーバーを立てていた馬鹿者です
RailsとDockerでAPIを作成していたのですが、ある日`rails s`でエラーが出ました。
この手のエラーはgemに原因があったりしますが、今回はDockerに原因があったので
(いや、自分に原因がある)まとめます。

#今までどうやってサーバを立ち上げていたのか
まずは作業ディレクトリにあるdocker-compose.ymlに記述したコンテナを
作成&起動させるために`docker-compose up -d`を実行します
次に、`rails s`でサーバを起動させます。(←ここがポイント)

この時点で、いつもならサーバが立ち上がり、localhost:3000なんかに繋がりました

#突如のrails aborted
さて、いつも通りに上記のムーブを実行したのですがエラーメッセージがでました
まとめると次の三つが解決のヒント
`Bootsnap::LoadPathCache::FallbackScan`
`cannot load such file — leveldb-

元記事を表示

rbenvでバージョンを変えたら、gem install railsできないって言われた。

*備忘録*

概要

CentOS7の環境でrubyをrbenvで管理。
rbenv local 2.6.5でとあるアプリのRubyのバージョンを変更。
すると、、

“`shell
$ rails s -b 0.0.0.0
rbenv: rails: command not found

The `rails’ command exists in these Ruby versions:
2.5.7
“`
怒られちゃったという話。

さらに「gem install rails」したらエラーにハマった話。

状況

まぁ、
そもそもこれは当たり前の話で、実際に.rbenv以下のパッケージの管理のされ方を見ればわかる。

“`shell:/home/vagrant/.rbenv/versions
$ ls
2.5.7 2.6.5
“`
こんな感じで管理されており、

“`shell:/home/vagrant/.rbenv/versions/2.5.7/bin
$ ls
bundle irb rake

元記事を表示

ポータルサイト創作記:1日目

習得していることを駆使して、なんか自分で創ってやろう、のコーナー。

Ruby on Railsを学んでいるので、それ関連のWebサービスなんか創っちゃうゾ!
見とけよ見とけよ〜。

毎日、最低1アクション。
微々たる歩みを明日に繋いでいくゥ。

今日は、GitHubにリモートリポジトリをつくりました。
サービス名はrestme(レストミー)にしようと思ってます。
まぁ、プロトタイプだし、なんでもいいんだけどね。

こういう作業に慣れたら、いくいくは本格的なサービスをつくっていけたらな、と思っています。スクリーンショット 2020-04-16 2.03.02.png

元記事を表示

rbenvでRuby2.6.5がインストールできない

環境

vagrant
CentOS7
Rails 5.2.4.2
Ruby 2.5.7

概要

別のディレクトリにあったアプリを仮想環境に持ってきて、localでそのアプリのRubyのバージョンに合わせようとした結果、、、、

“`zsh
Downloading ruby-2.6.5.tar.bz2…
-> https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.5.tar.bz2
Installing ruby-2.6.5…

BUILD FAILED (CentOS Linux 7 using ruby-build 20200401-7-g637ddf3)

Inspect or clean up the working tree at /tmp/ruby-build.20200415132139.18095.v4x36d
Results logged to /tmp/ruby-build.20200415132139.18095.log

Last 10 log lines:
installi

元記事を表示

railsチュートリアル 4章 初心者が意識すべき事

#初心者がrailsチュートリアル4章で学ぶべき事
1.**Ruby**について
2.**helper**とは(**module**とは?)
3.そもそも**rails**とは
##Rubyについて
これは、初心者の方であれば皆さんご存知**Progate**で十分に学ぶ事ができるかなと思います。
僕自身も含めて、初心者であればrailsの流れを抑えようとして、Rubyの基礎的なところが疎かになる事があります。railsチュートリアル、ポートフォリオ作成の途中でちょくちょく**Progate**に戻って復習するくらいがちょうど良いのかなと思います。
##helperとは
ここでは**module**をrailsでどのように使うのかという事を把握するくらいで良いと思います。
一応railsでのhelperの役割を説明すると、viewファイル(フロント)の可読性(読みさすさ)を保持する為にある、くらいで大丈夫かと。。笑
このサイトを一読してみるのがオススメです!

【Rails入門説明書】helperについて解説

##そもそもrailsとは
ここでは*

元記事を表示

【エラー備忘録】translation data {:title=>”タイトル”, :◯◯=>”△△”} can not be used with :count => 1. key ‘other’ is missing.

# エラーの内容
image.png (39.6 kB)

>I18n::InvalidPluralizationData in ReviewsController#create
>translation data {:title=>”タイトル”, :body=>”本文”} can not be used with :count => 1. key ‘other’ is missing.

と表示される。

# やりたかったこと
rails-i18nを用いて、reviewモデル内の下記の属性を日本語表示させようとした。

– title
– body

# 手順
1. “`gem “rails-i18n”“`を“`bundle install“`
2. application.rbに“`c

元記事を表示

ユーザー管理機能の実装(1)

今回は、**ユーザー管理機能の実装**を行なっていきたいと思います!
1~7の手順で進めていきます
(1)では1. deviseのインストール、2. Userモデルの作成を行うところまでやっていきます

#目次
1. deviseのインストール

2. Userモデルの作成

3. deviseのviewファイルを追加

4. サインアップ機能の追加

5. ユーザー情報編集機能の追加

6. ログアウト機能の追加

7. フラッシュメッセージの表示機能の実装
#1. deviseのインストール
ユーザー管理機能のの実装には、”devise”を使用します
まず初めにGemfileを開きましょう!
Gemをインストールするために、Gemfileに追記を行います

“`Gemfile
(略)
Gem ‘devise’
(略)
“`

Gemfileのgroup内に記述しないように注意しましょう!
*group内に記述した場合、特定の環境のみで使用される設定になってしまします

次に、deviseのインストールを行います ターミナルでbundle installを行い、続いてd

元記事を表示

Railsのコントローラー(モデルでも)では他とメソッドを共有したい時に継承ではなくConcernsを使おう

railsでプログラミングをしていると、同じようなメソッドを別々のコントローラーで使いたい時があったりします。また、肥大化して可読性がさがったコードを分割して、別ファイルにしたい時とかもあります。そんなときは継承を使わずに、Concernsを使いましょう

## 継承を使うと、改修が起きた時にバグに気が付かない

例えば、`HogeController`からCSV出力の所だけ切り出した`HogeCsVController`を作りたい場合

“`ruby:HogeController.rb
class HogeController < ApplicationController def index end def show end protected def set_hoge end end ``` ```ruby:HogeCsvConntroller.rb class HogeCsVController < HogeController def csv hoge = set_hoge end end ``` みたいな書き方でも動くといえ

元記事を表示

プログラミング初心者がTECH CAMPに通うと、一ヶ月半でこのくらいのアプリを作れるようになります。

初めまして。
2020年2月17日よりTECH CAMPというプログラミングスクールに通っている寺嶋と申します。

今回は、スクールの課題である「個人アプリ」について紹介させていただきます。

マークアップ言語もロクに扱えなかったプログラミング初心者が、TECH CAMPに通ってどこまで成長するのかの参考になればと思っておりますので、スクールに通うことを検討している方はぜひ参考にしてください。

# 「男飯」取り扱い説明書
top

## 本番環境URL
http://18.178.138.85/users/sign_in

## テストユーザー
メールアドレス test@gmail.com
パスワード aaaa1111

# 制作した経緯
私自身、「今日のご飯は超簡単に済ませたい!」と考え料理投稿アプリを検索する

元記事を表示

Railsチュートリアル3章

#3.2.1 演習
######1. Fooというコントローラを生成し、その中にbarとbazアクションを追加してみてください。

“`
$ rails g controller Foo bar baz
“`

######2. コラム 3.1で紹介したテクニックを駆使して、Fooコントローラとそれに関連するアクションを削除してみてください。

“`
$ rails destroy controller Foo bar baz
“`

#3.4.3 演習
######1. サンプルアプリケーションにContact (問い合わせ先) ページを作成してください。

下記コードを追記しました。テストも問題なくクリアしています。

“`static_pages_controller_test.rb
require ‘test_helper’
class StaticPagesControllerTest < ActionDispatch::IntegrationTest (中略) test "should get contact" do get st

元記事を表示

【Rails DBエラー】SQLite3::SQLException: table “✖︎✖︎✖︎” already existsが出るときの解決

# 【Rails DBエラー】SQLite3::SQLException: table “✖︎✖︎✖︎” already existsが出るときの解決

## なぜこのエラーが出るか
このエラーはすでに作成されているテーブルが再度作成されているときに出現するエラーです。
モデルを作った後に、カラム名とかを間違えて「rails db:rollback」とかz「rails destroy モデル名」とかして、また「rails db:migrate」をした時におきますね。
↓こんなエラー

“`:terminal
> rails db:migrate
== 20201111115213 CreateComments: migrating ===================================
— create_table(:comments)
rails aborted!
StandardError: An error has occurred, this and all later migrations canceled:

Caused by:
SQLite3::SQ

元記事を表示

【RSpec・Modelsテスト】画像を複数投稿するカラムを持つモデルでのテストデータの作り方・テストの通し方

####環境
carrierwave
rails 6.2.0
capybara 3.28.0
rspec-rails
rails-controller-testing 1.0.4
factory_bot_rails

##前提
– @postというモデルがある。
– @postモデルは@userが投稿する。
– @postモデルは次のカラムを持つ。

|   型   | カラム名 |
|:—————–|——-
| string | name |
| text | content |
| string | picture|
| string | user_id|

– pictureカラムには画像が複数はいる。(つまり複数投稿できる。)

– FactoryBotと書くのを省略するため、以下を記述します。

“`spec/rails_helper.rb
~~省略~~
RSpec.configure do |config|
config.

元記事を表示

Railsの命名規則まとめ

RailsではCoC(Convention over Configuration)という概念があります。
設定より規約という意味です。

今回はこのRailsの規約に則ってコントローラやモデルの命名規則をまとめていきたいと思います。

##1 Modelの命名規則

Modelは簡単に表現すると各テーブルの設計書のようなものです。
設計書は一つしか存在しないものなので、単数形で作成するものになります。
したがって、コマンドを入力するときは

“`
$ rails g model Book
“`

のようになります。

##2 Viewの命名規則

Viewのフォルダには複数のViewファイルが作成されるため複数形で作成します。

## 3 Controllerの命名規則

controllerはそのcontrollerの中に複数のアクションを持つので複数形で作成します。

“`
$ rails g controller Books
“`

##4 Modelにつけてはいけない名前

予約語や自分の作成したアプリ名はモデル名に指定できません。
予約語を確認するには rails c

元記事を表示

OTHERカテゴリの最新記事