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

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

Railsで404エラーページを設定するとrefileで投稿した画像が表示されなくなる場合の対処法

## 概要
Railsで404のエラーページを作成した場合のみ、refileで投稿した画像が表示されなくなる。
エラーページのコードをコメントアウトすると画像は表示される。

404エラーページのためのコードは下記の通り。

“`ruby:application_controller.rb
unless Rails.env.development?
rescue_from Exception, with: :render_500
rescue_from ActiveRecord::RecordNotFound, with: :render_404
rescue_from ActionController::RoutingError, with: :render_404
end

# viewsでerrorディレクトリを作りそこに404.html.erb/505.html.erbを作成する
def render_404
render ‘error/404’, status: :not_foun

元記事を表示

【rails】デプロイ時のUglifier::Error: Unexpected token: について

#はじめに

デプロイ時にでたエラー
`Uglifier::Error: Unexpected token:`

の解決方法を記載しておきます

#解決方法

“`ruby:config/environments/production.rb
config.assets.js_compressor = :uglifier
“`
上記の記述を下記の記述に編集します⬇︎

“`ruby:config/environments/production.rb
config.assets.js_compressor = Uglifier.new(harmony: true)
“`

編集したらコミットプッシュを忘れずに!

以上で解決できました。

元記事を表示

個人アプリ開発期間中のメモ

?5/30
jqueryは複数バージョン入れると起動しなくなる。
?5/27
= link_to の中に= link_to を埋め込むと上に定義した= link_to が消される(上書きされる)
ページネーションを真ん中に表示させる方法
.pagination {
justify-content: center;
}
ページネーションのビューを変える方法(bootstrap4を導入してる前提)
rails g kaminari:views bootstrap4

?5/26
importantは多様使用しない
夢と魔法のeach文の使い方を覚えた
?cssには適用する優先順位が存在する。
上から順に読まれる
全称セレクタ * 0
タイプセレクタ p 1
擬似要素 :first-child 1
擬似クラス [type=”text”] 10
classセレクタ .fugafuga 10
idセレクタ #piyopiyo 100
要素に直書き style=”” 1000

?5/25のアウトプット
empty?は配列が空か確認する
nil?は配列が存在するか確認する
:tag_idsで

元記事を表示

rails newしたときにインストールしている最新のRailsバージョンでアプリが作成されない場合の対処法

`rails new`を実行したときにインストールしているRailsの最新バージョンでアプリが作成されず、どハマりしたので投稿します。

## はじめに
バージョンを指定せずに`rails new`すると、インストールしているRailsの最新バージョンでアプリが作成されます。
が、私が遭遇したのは`rails new`すると最新版ではなく、古いバージョンでアプリが作成されるという現象でした。しかもそのバージョンは`gem list`コマンドでも表示されないバージョンでした。。

## 問題の原因
先に原因を書くと、環境変数の設定に問題がありました。

`/usr/local/bin`が`/Users/user_name/.rbenv/shims`より先に定義されており、`$PATH`は先に書いたほうが優先されるため、`/usr/local/bin/rails`が使われたことが原因でした。
つまり、rbenvで管理されているRailsのバージョンではなく、macにインストールされているRailsが参照されていました。

“`
$ echo $PATH
/usr/local/bin:(中

元記事を表示

【Ruby】親クラスと子クラスの関係。クラスとインスタンスの関係。

 初学者の備忘録。

 親クラスと子クラスの関係、クラスとインスタンスの関係について、少し混乱したので。

 4つは全てオブジェクトであり、オブジェクトはクラスを包含する概念。

○クラスとインスタンスの関係
 ・クラスを元にして、インスタンスという「オブジェクト」が作られる。
 ・クラス内で定義されたメソッドは、「インスタンス.メソッド」のようにして呼び出すことができる。
 ・@〇〇〇のような、クラス内で定義されたインスタンス変数は、インスタンス内でも呼び出すことができる。

○親クラスと子クラスの関係
・親クラスを元に、子クラスという新しい「クラス」が作られる。
・子クラスでは、親クラスで定義されたメソッドを、同名のメソッドを定義することで変更できる(オーバーライド )。

元記事を表示

Ruby モジュール入門

#Ruby モジュール入門
Rubyの機能であるモジュールですが、Rubyを始めた方にとって理解が難しい部分の一つではないかと感じています。

そこで今回はモジュールについてまとめていこうと思います。

##モジュールの機能
● ミックスイン( includeとextend )
● 名前空間の作成
● 関数やメソッドを提供する

他にも機能はありますが、3つ主要な機能を挙げてみました。
今日はこれらについてみていきたいと思います。

##ミックスイン
ミックスインと言われてもなんのことだかわからないと思いますが、
モジュールをクラスに組み込むことで多重継承を行えるようになります。
Rubyではclassの単一継承しかできませんが、moduleは多重継承が可能です。
またclassと違いis-aの関係(あるオブジェクトが「あるクラスもしくはその子孫クラスのインスタンスである」という関係)でなくても同じ機能を共有できます。

追記:is-aの関係の説明について修正いたしました。コメントをいただきありがとうございます。

###include

“`ruby.rb
module Hoge

元記事を表示

TECH CAMP 7,8週目

TECH CAMPは7週目より最終課題に入っています。最終課題はメルカリのクローンフリマアプリのチーム開発。ちなみに私がチームのスクラムマスターで、5名で開発を推進してます。ひとつひとつのタスクの工数がきちんと把握できていない中での調整は難しいですが、今のところバランス良く進められているかなと感じています。
進め方としては、全員でデータベース設計をし、完了後にまず全てのページの表示に必要なルーティング、コントローラー、ビューを用意、そこからそれぞれのページのマークアップを全員に振り分けます(1〜2ページ/人)。その後、サーバーサイドを全員に振り分けます。これにより全員が様々なページ/機能に触れられるかなと考えたんですが、タスクによっては時間がかかるものがあり、そのメンバーはひとつの機能実装の深堀ばっかりになってしまい、そこは少し申し訳なかったなと思います。

 【担当した実装】
・商品購入確認ページのマークアップ
・商品詳細ページのマークアップ
・ウィザード形式を用いたユーザー新規登録、ログイン、ログアウト機能
・カテゴリ表示、選択機能

スクラムマスターは指示出しをしつつ、もちろん開

元記事を表示

Rails Deviseでユーザー編集をパスワードを入力しないで更新する方法

#Rails Deviseでユーザー編集をパスワードを入力しないで更新する方法

Deviseで現在のパスワードを入力せずにユーザ情報を更新する方法をまとめます。

# 目次
* [動作環境](#動作環境)
* [前提条件](#前提条件)
* [手順概略](#手順概略)
* [詳細手順](#詳細手順)
* [STEP1.新規登録ためのストロングパラメータの設定](#新規登録のためのストロングパラメータの設定)
* [STEP2.アップデートのためのストロングパラメータの設定](#アップデートのストロングパラメータの設定)
* [STEP3.パスワード無しで更新するためのメソッドを定義](#パスワード無しで更新するためのメソッドを定義)
* [STEP4.Viewファイルからcurrent_passwordフィールドの削除](#viewファイルからcurrent_passwordフィールドの削除)
* [結果](#結果)

## 動作環境
`OS : macOS Mojave 10.14.6`
`ruby : 2.6.5p114`
`rails : 5.2.4`
`dev

元記事を表示

form_withで、フォームの大きさを変える

form_withとform_forどっちを使えばいいのか?
違いがわからずにいました。

登録フォームを作る際に、
railsチュートリアルや、スクールのカリキュラムでは,form_forを使っていましたが、[現場で使える Ruby on Rails 5速習実践ガイド](https://www.amazon.co.jp/%E7%8F%BE%E5%A0%B4%E3%81%A7%E4%BD%BF%E3%81%88%E3%82%8B-Ruby-Rails-5%E9%80%9F%E7%BF%92%E5%AE%9F%E8%B7%B5%E3%82%AC%E3%82%A4%E3%83%89-%E5%A4%A7%E5%A0%B4%E5%AF%A7%E5%AD%90/dp/4839962227)では、form_withが使われていました。

どうやら、トレンドはform_withみたいですね。
この記事が、まとまっていてわかりやすかった。
[【Rails】form_withの使い方を徹底解説!](https://pikawaka.com/rails/form_with)
**form_w

元記事を表示

【Rails】本番環境との画像参照の切り替え方について

#この記事について
デプロイを済ませたアプリを、ローカル環境で画像投稿するとなぜか全てNoImageになってしまう!

それの原因がわかったので記事にします。

おそらく、僕と同じで某プログラミングスクールを卒業した人は高確率でこの問題にぶつかっているんじゃないかな?と思っています。
なぜなら、カリキュラムに書いてある内容には、この問題について触れていないから(笑

##こんな感じ
全部NoImageになっちゃってるじゃん!!(汗

スクリーンショット 2020-05-30 20.05.58.png

#解決方法

`/config/initializers/carrierwave.rb`の記述で、本番とローカルで参照を分岐させる処理がなかったので追加して解決しました。

カリキュラムには`carrierwave.

元記事を表示

アプリケーションサーバーとwebサーバーの違い

詳しくは、下記サイトがとてもわかりやすかったです!

【完全版】アフィリエイトブログの作り方!開設から稼ぎ方まで体系的に紹介

#結論
rubyなど、動的な動きを実現させるために必要なのが
アプリケーションサーバー。

でも、大多数からのアクセスへの負荷には対応していいないため
webサーバーも必要になります。

###アプリケーションサーバー
– Puma
– Unicon
など

###webサーバー

– Nginx
– など

元記事を表示

Rails consoleのIncorrect string valueエラー対応

# 概要

Rails Consoleでcsvインポート中に以下のエラーが出たのでその対応記録

“`sql
ActiveRecord::StatementInvalid:
Mysql2::Error: Incorrect string value: ‘\xE3\x82\xA8\xE3\x82\xB3…’
for column ‘name’ at row 1:
INSERT INTO `contracts` (`account_id`, `name`, `created_at`, `updated_at`)
VALUES (101, ‘エコノミー’, ‘2020-05-30 01:50:58’, ‘2020-05-30 01:50:58′)
from /usr/local/bundle/gems/mysql2-0.4.10/lib/mysql2/client.rb:120:in `_query’
“`

# character_set_databaseの対応

character_set_database、character_set_serverがlatin1になってい

元記事を表示

【rails】GoogleMapsAPI 緯度、経度が保存できない時の記述

# はじめに
以前書いた記事の追記でgooglemapAPIを使用した際に、住所は登録できているが緯度、経度が保存されないことでハマったので追記として残しておきます。

[【rails】google maps api 地図情報含んだ投稿をして表示させる方法](https://qiita.com/sho-17/items/0854d59d52d9c3679370)

# 実現したいこと
住所入力して投稿できてデータベースにも保存されているが、緯度、経度が保存されないことを解決させたい。

#geocoderについて

いろいろな記事を調べているとgeocoderは何も設定しないと精度があまり良くないことがあるそうです。
解決するためにはGoogle Map APIの情報源を使えるように設定すれば良いそうです。

#geocoder.rbファイルを作成

ではさっそく実装していきましょう。

configフォルダ内にgeocoder.rbファイルを作成します。

“`:ターミナル
$ bin/rails g geocoder:config
“`

上記の記述によりconfig/ini

元記事を表示

【rails】google maps api 地図情報含んだ投稿をして表示させる方法

##はじめに
・Maps JavaScript API
・Geocoding API

上記のAPIを使用して個人アプリの制作で地図を含んだ投稿をして、表示させる処理を実装しました。
いろいろな記事を参考にさせていただきでき結構ハマったのでまとめておきます。

※地図以外の投稿機能はできているものとしてまとめています

追記
[【rails】GoogleMapsAPI 緯度、経度が保存できない時の記述](https://qiita.com/sho-17/items/52d1f8c45c96c1a65c7f)
自分は緯度、軽度がうまく取得できていなかったので、同じような方がいましたらこちらの記事も参考にしてください。

#実装内容・イメージ写真
1.ユーザーに地名もしくは住所をぬ有力してもらう

2.詳細ページにてgooglemapにマーカーを落として表示させる

###投稿時
※フロント部分はほぼデフォルトのままですご了承ください。

投稿.png【Rails】Action TextとActive Storageテーブルのデータ取得

## 概要
ArticleモデルでActionTextを使おうと思った場合、次のようにすれば「action_text_rich_texts」テーブルのデータを取得できるが、一緒に作成される他二つのテーブルのデータを取得できず四苦八苦した。。。

“`ruby
class Article < ApplicationRecord has_rich_text :content end ``` ```zsh $ Article.first.content ``` ## 結果 それぞれ次のコードで取り出せた。 ```zsh $ ActiveStorage::Attachment => ActiveStorage::Attachment(
id: integer,
name: string,
record_type: string,
record_id: integer,
blob_id: integer,
created_at: datetime
)

$ ActiveStorage::Blob
=> ActiveStorage

元記事を表示

RSpecによるTDDでRailsAPIを実装してみた。part2

## 初めに

この記事は
[RSpecによるTDDでRailsAPIを実装してみた。part1](https://qiita.com/yoshi_4/items/6c9f3ced0eb20131903d)
この記事のpart2です。もしよろしければpart1からご覧ください。
今回の目標はoctokitを使ってUser認証のログイン機能とログアウト機能を扱えるようになるまでです。
この記事は結構長いです。記事だけの断片的なコードだと理解しづらい部分は多いですので、適度に自分のコードを読んで、内容を理解していってください。また、わかりづらい表現等がありましたら、コメントください。
それでは初めて行きます。

# GithubAPIとの通信

### Githubに登録

まずはGithubのApiを使って通信をするためにgithubでアプリケーション登録をする必要がある。
https://github.com/settings/apps
このページに飛び、New Github Appから登録に行く。

登録事項は以下。

Application name:
-> 一意で自由にアプリケー

元記事を表示

マークアップ共通化:アクション毎にurlパスの変更

# 概要
前回の記事で、マークアップの共通化を掲載しました
コチラ↓↓
https://qiita.com/kazuko___3o3___/items/019174474f4f258ba19b

実は、この記事がメインでございましたっ:triumph:

newアクション、editアクション毎に指定したいURLが異なり、最初はif文でコードを書くもエラー続きでした:cold_sweat:
その解消法を備忘録として残します!

# 事象
以前、【form_forが自動的に生成してくれるパスは複数形のみ】という記事を書かせていただきました(https://qiita.com/kazuko___3o3___/items/cf8e6966772d629d5927 )

そのため、HTMLは下記のように記載されています。

“`html:_form.html.haml
#省略
.new_display
= form_for @task, url: group_tasks_path do |f|
#省略
“`

【group_tasks_path】はnewアクションの時のみに有効で、edi

元記事を表示

マークアップの共通化【new,edit】

# 概要
新規登録画面(newアクション)や編集画面(editアクション)は登録項目は同じなので画面共通にしちゃた方が楽:relaxed:ということで備忘録のため残します。

# 変更点
①viewフォルダ内に _form.html.hamlファイルを作成し、表示内容を記載する
②viewフォルダ内にある edit.html.hamlと new.html.hamlに下記のコードを記載する

“`html:new.html.haml/edit.html.haml
= render “form”
“`

# 感想
あら!簡単:smile:
何ということでしょう!いとも簡単に画面の表示ができました!

しかし、、、
私が実装しているアプリには問題が発生。。。
form_forにurlを指定していたためエラーが発生してしまいました。。。。
こちらの解決法は下記URLをご覧くださいませ:rolling_eyes:

URL
https://qiita.com/kazuko___3o3___/items/37579db477c5f398c472

元記事を表示

[Rails] herokuデプロイエラー Precompiling assets failed.

# 備忘録です
Railsでアプリ作成し、herokuにデプロイしようとしたところgit push heroku masterでエラーが出たので、解決方法を残しておきます。

# デプロイまでの流れ

[【初心者向け】railsアプリをherokuを使って確実にデプロイする方法【決定版】](https://qiita.com/kazukimatsumoto/items/a0daa7281a3948701c39#heroku%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9Frails%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AE%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4)を参考にしました。

# エラー解決参考記事
[Uglifier::Error: Unexpected character ‘`’ Herokuデプロイ時のエラー解消方法](https://qiita.com/kazukimatsumoto/items/a0daa7281a3948701c39#heroku%E3%82%92%E4%BD%BF%

元記事を表示

【置換】コメントアウトを削除して改行を残さない方法【正規表現】

#はじめに
rails newで作成されたファイルにあるデフォルトのコメントアウトをテキストエディタでまとめて削除したい。
でも普通に置換えたら改行が残ってしまう。
そんな時に少し便利な正規表現。

#使用環境
– Visual Studio Code (version 1.45)

#やり方
**検索する文字列:**  ~~`^\s*#.+\n`~~ `^[ \t]*#[^\n]*(?:\n|$)`
**置換え後の文字列:** `指定しない(空白)`

#サンプル
###置換前
“`ruby
require_relative ‘boot’

require ‘rails/all’

# Require the gems listed in Gemfile, including any gems
# you’ve limited to :test, :development, or :production.
Bundler.require(*Rails.groups)

module SampleApp
class Application < Rails::Application

元記事を表示

OTHERカテゴリの最新記事