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

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

【プログラミング初心者】binding.pryを使用したログイン画面のデバッグ方法

##記事を書く目的
プログラミングを勉強中です。
エラーで詰まることばかりの為、自分でしっかりとデバッグができるようになりたいと考え、備忘録としてデバッグを行った際の記事を残します。

##環境
Mac OS catalina 10.15.3
Rails 5.2.4.1
Visual Studio Code

##状況
Railsを用いてアプリケーションを開発中、ログインができないというエラーが発生しました。
(deviseを使わず実装しています)
何が問題なのか突き止めるべく、binding.pryを使ってみます。

##デバッグの手順
###①gem ‘pry-rails’をインストール(binding.pryを使うためのgemです)

“`ruby:Gemfile

gem ‘pry-rails’, group: :development

これをファイルの一番下に追記
“`
デバッグは開発環境でしか使わないのでgroup: :developmentを記載しています。

“`ruby:Gemfile
group :development do
gem ‘web-con

元記事を表示

Rails テストについて 3

#はじめに
テストに拒否反応があるので、まずは整理したいと思います。
少しづつ記事を書いていきます。
[Rails テストについて 1](https://qiita.com/raigakun/items/b88af7e80e64abfedcca)
[Rails テストについて 2](https://qiita.com/raigakun/items/d0d253f6338ce9d89fe5)
もうすでにご存知の方、省略の仕方等ご存知でしたら、ご助言願います。

##単体テスト(モデルクラス)
– インスタ風アプリで、実際にやってみようと思います。
– AWSデプロイ
– http://18.180.191.27/users/sign_in

### テスト対象
– photo **モデル**
– image(画像)がないと投稿できないようになっているのか確認

“`photo.rb
class Photo < ApplicationRecord belongs_to :post validates :image, presence: true mount_up

元記事を表示

devise実装後のユーザ権限設定方法について記述していきます。

はじめに

前回の投稿では、アルバムページの作成方法についてご紹介いたしました。
その後、私はdeviseを使用してログイン機能の追加や各種投稿機能を実装し、
Railsアプリっぽくなってきた事に満足していたのですが、
重要な欠陥に気付きました。

それは、このままではどのユーザでログインしても投稿画面やアルバム一覧が全て見えてしまうという事です。。。。
絶対嫌ですよね。見知らぬ方にプライベートな写真や投稿を見られるのは。
このままではいけないと思い、各ユーザ毎に閲覧可能なページの権限設定方法について調べ、
実装しましたので備忘録として記事に残したいと思います。

下記の動画を参考にしました。非常に分かりやすくおすすめです。
お困りの方は是非ご覧いただければと思います。

やりたいこと

UploadモデルをUserモデル(deviseにて作成)に紐付け、権限設定を行う

環境

macOS:10.15.2
Ruby:2.6.5
Rail

元記事を表示

ExecJS::RuntimeUnavailableの解決方法

##前提条件
ruby ‘2.5.0’
Rails ‘5.1.4’

#mini_racerを使おう
先日MacのOSアップデート後、rails serverを立ち上げようとしたところ、`Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)`と怒られてしまった。
どうやら、Javascriptを実行するために必要なランタイム(ソフトウェアの実行に必要なプログラム)がないぞということらしい。
エラーメッセージには、https://github.com/rails/execjs と利用可能なランタイムの一覧のリンクまで表示してくれてある。
親切。
 
ただリンクの一覧にある`therubyracer`はトラップだった。
導入を進めている他の記事も多いけど、自分の前提条件だと、このgemをbundle installしようとしたところ、

“`
An error occur

元記事を表示

#Rails + docker 環境で Ruby をバージョンアップした時に bundler や bootsnap か何かのエラーでサーバーが起動しない

超ざっくり情報ですが

Rubyバージョンのアップデートや
gem のアップデートをしたあとで

“`
docker-compose build
docker-compose up
“`

した時、エラーのスタックトレースに bootsnap とか spring とか bundler とか出てくる時

docker コンテナでの

“`
rm -rf tmp/cache/bootsnap-compile-cache
rm -rf tmp/cache/bootsnap-load-path-cache
“`

でも解決しなかった時

docker コンテナに入って

“`
bundle clean –force
“`

で起動するようになりましたが、理由まで確認してません
偶然かもしれませんが、何度か再現しています

お試しください

# Original by Github issue

https://github.com/YumaInaura/YumaInaura/issues/3110

元記事を表示

deviseのエラーメッセージ表示でビュー崩れ 対処法

#####はじめに
チーム開発でフリマアプリを模したものを開発しています。deviseのエラーメッセージ表示によるビュー崩れがあり、修正対応に少しハマったので、簡単ですが対処法を残しておきます。

環境
rails (5.2.4.2)
devise (>= 4.7.1)
devise-i18n (1.9.1)
devise-i18n-views (0.3.7)

■ユーザー登録画面 初期状態です
20db8873e7b232ed634cde2d713668a2.png

■ユーザー登録に必要な項目の入力漏れがあると下図のようにエラーメッセージが表示されます。
(deviseの標準機能です。デフォルトが英語なので、日本語化する為にdevise-i18nというgemを導入しています)
ビューの縦方向のずれは、これらの要

元記事を表示

【Rails】erbを一括でhamlに変える

**rails new**で自動生成される**erbファイル**を
hamlに一括変換する簡単な手順を
備忘録もかねて。。。

# haml-railsを導入
最下部に追加する

“`:Gemfile

gem “haml-rails”

“`
ここで【 **bundle install** 】

## あとはターミナル
下記コマンドを実行します。

“`terminal:ターミナル
rails haml:erb2haml
“`
 
うまく実行されると「Generating HAML for 」に続いて
変換されているファイルがずらっと表示される。
[![Image from Gyazo](https://i.gyazo.com/6c433d457a2b15b088b0f6ebacadf7f5.png)](https://gyazo.com/6c433d457a2b15b088b0f6ebacadf7f5)
下から6行目のように「Would you like…」と表示される。
( **元の.erbファイルを削除しますか?**という内容 )
**「 y 」**を入力する。

元記事を表示

備忘録 railsの継承関係をちょっとだけ理解できた

初めてrailsを触った時、
クラス・モジュールの継承知識がないまま以下の文を見たので
『なんでApplicationクラスがApplicationクラスを継承してんだよ』
と頭の中が?でいっぱいになった思い出があります。

“` config/application.rb
module Hoge
class Application < Rails::Application #省略 end end ``` ちょっとは理解が深まったので改めて継承関係を確認してみることに ```ruby $ rails console ``` Applicationクラスの親クラスを表示(継承関係は見えているが一応、、、) ``` irb(main):001:0> Application.superclass
Traceback (most recent call last):
1: from (irb):1
NameError (uninitialized constant Application)
“`
ん、なんでだ?Applicationクラスじゃないのか

元記事を表示

ONE PIECE FILM STRONG PARAMETERS -ストロングパラメータがわからない人向け-

皆さんに質問です。
「**ワンピース**」は好きですか?
愚問でしたね、私も大好きです。
ワノ国編が面白すぎて「今週号読んだ?神回やわ…」って毎週言ってます笑
ちなみに一番好きなキャラはゾロです。

では次の質問です。
Railsの「**ストロングパラメータ**」は知ってますか?

>「なんとなく、、」
「言葉は知ってるけど、正直何やってるか知らん」
「なにそれ?おいしいの?」

大丈夫です。
そんな人たちに向けて、**ワンピースの世界観を題材にしてわかりやすく解説します。**
この記事の目標は、
「**他の例えを使って説明できるレベルまでストロングパラメータの理解を深める**」です。

####それでは早速、冒険に出発しましょう!

##1. パラメータとストロングパラメータを少しおさらい
冒険に行く前に、
まずはパラメータとストロングパラメータの違いについて少しおさらいしておきましょう。

**・パラメータ(Parameters 又は Params)**
送信される複数のデータをひとまとめにしたモノ
例:Twitterで投稿されるデータ(ユーザー名、ツイート

元記事を表示

params[:id]とcurrent_user.idの違い

# paramsとは

paramsとはRailsで送られてきた値を受け取るためのメソッドです。

送られてくる情報(リクエストパラメータ)は主に、getのクエリパラメータとPostでformを使って送信されるデータの2つです。

基本的には

“`
params[:カラム名]
“`

で値を取得します。

# current_userとは

現在ログインしているユーザーをモデルオブジェクトとして利用できます。

関連付けがされている場合、子要素・親要素の取得などが可能です。(結構大事)

元記事を表示

rails ブラウザで表示されない

rails初心者です。
チュートリアルをやっていてつまづきました。
rails -sを入れてもhello worldが表示されず、このまま変化しません。
対処法があれば教えていただきたいです。
よろしくお願いいたします。
スクリーンショット 2020-05-02 0.06.47.png

元記事を表示

EC2とRDSを使用し、RailsアプリをAWSにあげる際に詰まった点 -その2- 

#●はじめに
下記の記事を参考にEC2とRDSへを使用しRailsアプリをAWSにデプロイする際に詰まった点と、その解消方法をまとめました。
[世界一丁寧なAWS解説。EC2を利用して、RailsアプリをAWSにあげるまで](https://qiita.com/naoki_mochizuki/items/f795fe3e661a3349a7ce)

#3.データベースの作成・接続ができない(RDSとRailsの接続)
RDSを使用したため、参考サイトの記述されているMySQLの設定方法とは異なる方法で実装する必要があります。
RDSとRailsの接続時に気にする大きなポイントは2つです。

###1.RDSのセキュリティグループで、EC2インスタンスのブライベートIPからの接続を許可してあるか

セキュリティーグループは、AWS consoleからRDSを開き、DB選択すると確認できますね。
![スクリーンショット 2020-05-01 23.16.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/5

元記事を表示

Rails 「Strong Parameters」につて

# はじめに
日々のアウトプットとしての記録です。
初学者なので記載に間違いなどがありましたら、指摘いただけると幸いです!

#記事の目的
ストロングパラメータって???
なんだかよくわからん。。。
いろいろと調べて、自分なりの理解を記事にまとめます。

#ストロングパラメータの必要性
>Strong parametersを用いることで、Action Controllerのパラメータが許可されるまでActive Modelの「マスアサインメント」に利用されることを禁止できます。つまり、多くの属性を一度に更新したい場合は、どの属性のマスアップデートを許可するかを開発者が明示的に指定しなければなりません。大雑把にすべての属性の更新を一括で許可してしまうと、外部に公開する必要のない属性まで誤って公開してしまう可能性が生じるため、そのような事態を防ぐための機能です。
引用 [railsガイド](https://railsguides.jp/action_controller_overview.html)

まあ、個人的に簡単にすると。。
####「意図しない更新や登録などをチェックする機能」

元記事を表示

親モデルの単体テストをやったから、ついでに子モデルの画像アップロードテストもやろうとして頭を抱えた話。

#今回やること
[前回](https://qiita.com/0thefool/items/5e5935204c5a62f8bcce)、やっとまともに単体テストをやって、気を良くしたので親子関係のあるモデルの画像投稿の単体テストをやろうと思いました。
本当は「子モデルの単体テスト」だけにしたかったのですが、子モデルのカラムには画像保存のカラムしかなかった。
なので半強制的に画像の投稿テストまでやることになりました。

色々と勉強になったので備忘録として記載します。
#動作環境
ruby 2.5.1
rails 5.2.4.2
carrierwave 2.1.0
mini_magick 4.9.5
#下準備
ここまでの環境は[前々回](https://qiita.com/0thefool/items/5af0f17f0075e7e0e013)とか[前回](https://qiita.com/0thefool/items/5e5935204c5a62f8bcce)の記事の下準備をご覧ください。
#今回のテスト環境の準備
起動時間が早くなるらしいと聞いたので **’spring-comman

元記事を表示

MiniMagickの使い方 ArgumentError wrong number of arguments (given 4, expected 2) 

#MiniMagickの使い方
ArgumentError  wrong number of arguments (given 4, expected 2) 

開発環境
ruby 2.7.0p0
Rails 5.2.4.1

はい、またしても出ましたArgumentError
minimagickというgemを導入したらエラーが出たので改善してみました。

なかでも『wrong number of arguments (given 4, expected 2)』についての解説です。

今回はポートフォリオにアップロードした画像のサイズを変えたり余白を設定するgemを実装した時に起きたエラーです。

今までのポートフォリオではインスタライクなサービスなのでとりあえず画像投稿機能までは作っていたのですが、画像のファイル制限はしているものの縦横サイズ感についての制限はしておらず、投稿によってはやけに縦長のトピックになってしまったりしていました。

そこでGemfil

元記事を表示

Railsでモーダルの出し分けを管理する

Railsでモーダルの表示処理をまとめて衝突しないように管理する方法を紹介します。

# 背景

[ツクリンク](https://tsukulink.net/)を運営する中でモーダルが少しづつ増え、衝突することがあったためモーダルの優先順位を付け、衝突しないよう実装をしました。

# 実装

## 前提

以下の3つのモーダルがあるとします。

– A: 初回ログインで出すモーダル(全ページ)
– B: 特定のユーザーにだけお知らせを出すモーダル(全ページ)
– C: 特定のページで出すモーダル(Posts#show)

## コードサンプル

全ページに出すモーダルはApplicationControllerで該当ユーザーか判断しモーダルに必要な情報をセットします。

“`ruby
# controllers/application_controller.rb
class ApplicationController < ActionController::Base before_action :set_modal_A before_action :set_modal_B

元記事を表示

railsで.xlsxを生成する

## 概要
xlsxを出力する必要があったため、 [caxlsx_rails](https://github.com/caxlsx/caxlsx_rails) 使用して.xlsxファイルを生成していく
> **axlsx_rails renamed to caxlsx_rails**

もともと`axlsx_rails`という名称のgemだったっぽい

## 準備
“`ruby:Gemfile
gem ‘caxlsx’
gem ‘caxlsx_rails’
“`

## コントローラーに追加
“`ruby:hoges_controller.rb

def show
@hoges = Hoge.all
respond_to do |format|
format.html
format.xlsx
end
end

“`

## viewに拡張子が.xlsx.axlsxのテンプレートを作成
下記のようなファイルを作成するだけでxlsm形式のファイルを生成する事が可能。

“`ruby
wb = xlsx_pac

元記事を表示

【Rails】sorceryのパスワードリセット機能(トークンがどのように使用されているのか)

## はじめに
sorceryのパスワードリセット機能の実装を行いました。
以下3点について記述しましたので、ご興味あれば見てってください。

**1. sorceryのパスワードリセット機能の実装方法
2. ActionMailerの使い方
3. passwordリセットトークンがリクエスト/レスポンス間でどのように使われているか**

## 1. sorceryの`reset_password`をインストール

#### モジュールの実装とマイグレーションファイルの作成

– `rails g sorcery:install reset_password –only-submodules`を実行し、password reset用のモジュールのインストール、マイグレーションファイルを作成する。

“`terminal
$ rails g sorcery:install reset_password –only-submodules
Running via Spring preloader in process 99290
gsub config/initi

元記事を表示

[rails][devise][初心者]rspecでテストコードを書きながら学ぶ

# はじめに
deviseを使用したユーザー登録のテストコードを書いたので、備忘録として書き残します。
なお、内容はとても簡単な、初学者向けのものなります。

### 使用Gem等

– ruby, 2.5.1
– rails, ~> 5.2.3
– devise
– rspec-rails, ~>3.5
– factory_bot_rails

上記のGemをインストールします。
なお、web_console というgemはtest環境で動かすと不具合が起きる可能性があるgemなのでdevelopment環境でのみ動くようにします。
group :development do ~ endの記述が無ければ作成し、既にあればその記述の間にweb_consoleを移動させます。

## Rspecの設定ファイルを作成
ターミナルで下記のコマンドを実行します。

““
rails g rspec:install
““
すると以下のファイルが作成されます。

““
create .rspec
create spec
create spec/spec_helper.rb
cre

元記事を表示

Railsのフォーム(form)

##1.基本的なフォームを作成する
最も基本的なフォームヘルパはform_tagです。

“`
<%= form_tag do %>
Form contents
<% end %>
“`

form_tagは、上のように引数なしで呼び出されると

タグを生成します。このフォームを現在のページに送信するときにはHTTPのPOSTメソッドが使われます。たとえば現在のページが/home/indexの場合、以下のようなHTMLが生成されます (読みやすくするため改行を追加してあります)。

“`


  • OTHERカテゴリの最新記事