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

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

AWS+Nginx+Unicornを利用してRailsアプリをデプロイしてみた。〜その1〜

##はじめに
[前回記事](https://qiita.com/President_Taka/items/a55c85996dd6a8a8bb4c)で作成したAWSの環境を利用し、Nginx+Unicornを使用してRailsアプリをデプロイします。
次のアプリがローカル環境と同じように動作するようにデプロイします。

スクリーンショット 2020-01-25 6.40.58.png

##Railsアプリケーションの実行環境
DB:MySQL
ruby 2.6.3
rails 5.2.4
bundler 2.1.0

##EC2接続
EC2を起動し、SSH接続を行います。

“`
$ ssh -i aws-test.pem ec2-user@[パブリックIPアドレス]
The authenticity of

元記事を表示

ES6構文をRailsでプリコンパイル

AWSにRailsアプリをデプロイしようとした時、、、

諸々設定も終盤、EC2へSSHでログインし、Railsアプリをプリコンパイルする

スクリーンショット 2020-01-26 10.46.06.png

はい、怒られました。

原因は

“`
Uglifier::Error: Unexpected token: punc ()). To use ES6 syntax, harmony mode must be enabled with Uglifier.new(:harmony => true).
“`

この部分に書いてありますね。
google翻訳先生に聞くと、

>「Uglifier :: Error:予期しないトークン:punc())。 ES6構文を使用するには、ハーモニーモードを>Uglifi

元記事を表示

git push heroku masterできない時の対応

# 問題

リポジトリから読み取ることができないと言ってそう。。

“`
$ git push heroku master
fatal: ‘heroku’ does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

“`

# 解決策
リンク先のやり方で解決しました!!
### 参考
[作成したRuby on RailsプロジェクトをHerokuを使ってデプロイしてみる](https://qiita.com/lowg/items/8eac155d65fb7919cada)

元記事を表示

capybaraでfields_forのformの要素をあいまい検索でテストする

# はじめに
最近はrspec書いてて、これどうすんねんーーーってとこあったので備忘録的な感じで書いておきます。

# 今回の困りごと
`fields_for`で`form`を追加した際に、`form`の要素をどうやって指定すればいいか困りました。
スクリーンショット 2020-01-26 2.22.58.png

今回は画像のプラスボタンを押すとformが追加されるようになっており、値を入力して保存できるかどうかをチェックしたいのですが、追加した`form`のindex番号はランダムで生成されるため、
“`
困ったらググれ

どうも、[**momotaro**](https://twitter.com/1992_momotaro)です。初めまして。

TECH::EXPERT受講初めたことがきっかけで、ブログはじめました。
自己学習(アウトプット)の為に投稿していきます。

今週月曜からプログラミング初心者として学習を始めて、この一週間で学んだ大きなこと。
それはタイトルにある通り、
### 分からないコードが出てきたり、エラーが出てきたらGoogleさんに遠慮なく質問しよう!
・・・ということですね。

これはTECH::EXPERTのカリキュラムにもきちんと書いてあります。

この教えが意味するものは
###『”自己解決能力”を身につける』

だと思います。大切なのは、なぜその問題が起こるのかを理解すること。そして大事なのは、いかにその問題をいち早く解決できるか・・・。
実際現場の方でもググることはよくあるそうです。

なので、これからは良い検索方法やわかりやすい解説サイト、ブログなどあれば模索していきたいと思います。

また自分が新しい解説など思いついたり発見した場合は発信していきます。

最後に自

元記事を表示

RSpecで利用するFactoryBotの導入

#FactoryBot

FactoryBotはテスト用データの作成をサポートするgemであり、利用するとテスト用のデータを簡単に作成し、テストから呼び出すことができる。

早速Gemfileに’factory_bot_rails’を記述しbundle install を実行しよう

“`ruby
# Gemfile
group :development, :test do
gem ‘rspec-rails’
gem ‘factory_bot_rails’, ‘~> 4.11’
end
“`

##FactoryBotでテストデータを作成できるよう準備

###Userのファクトリを作成
一例としてuserのファクトリを作成していきます。

“`ruby
# spec/factories/users.rb
FactoryBot.define do
factory :user do
sequence(:email) { |n| “tester#{n}@example.com” } #重複を防ぐためsequenceを使う
password { ‘passw

元記事を表示

Rails6 decimal型のカラムに格納されたデータの文字数を取得する

# 目的

– devimal型のカラムに格納されたデータの文字数を取得する方法をまとめる。

# 経緯

– Rails6のアプリでツイート用のテンプレートを作成したい。
– そのテンプレート内容は140文字以内に制限したい。
– そのテンプレート内容はデータベースの複数の特定カラムに格納されているもので構成される。
– 複数の特定カラムのデータ型はtext型とdecimal型が混在している。

# 結論

– decimal型のデータの文字数は`.to_s`で一旦文字列に変更してから`.length`で文字数を抽出する。

# 詰まったところ

– decimal型の値を`.length`のみで文字数を抽出しようとした。
– そもそも数値に`.length`メソットは使用できない。

# 解決方法

– decimal型の値の文字列は`.to_i`で一旦文字列に変更してから`.length`で文字数を抽出した。
– 下記に文字数の抽出方法を記載する。

“`ruby
decimal型の値.to_s.length
“`

# 今回の具体例

– 下記にテン

元記事を表示

【Rails】Qiita 週間いいね数ランキング【自動更新】

# 他のタグ

– [Python](https://qiita.com/kou_pg_0131/items/9d7f2ffeafb36cf59a77)
– [JavaScript](https://qiita.com/kou_pg_0131/items/eaa7ac5b62a0a723edbb)
– [AWS](https://qiita.com/kou_pg_0131/items/e24b6279326a462d456c)
– [Ruby](https://qiita.com/kou_pg_0131/items/72c3d2e896bdc3e1a6b3)
– [Rails](https://qiita.com/kou_pg_0131/items/93b9e7f7d143e9ce650e)
– [Docker](https://qiita.com/kou_pg_0131/items/ae11fca7d2eba445b037)
– [Vue.js](https://qiita.com/kou_pg_0131/items/2774e02c6eea5c830d99)
– [PHP](htt

元記事を表示

【gon】jsでRails変数を取得する

`Railsでjsライブラリを使うときに楽にRailsで定義した変数をJavaScriptに渡したい!楽したい!`

# プログラマ三大美徳
**1.怠慢(Laziness)**
**2.短気(Impatience)**
**3.傲慢(Hubris)**

まさにこれですね。

# 何を使うか?

RailsといえばGemですね。[gon]というgemです。
https://github.com/gazay/gon

#インストール

Gemfileに記載

“`ruby:Gemfile
gem ‘gon’
“`

ターミナルからインストール

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

読み込み設定

“`ruby:application.html.erb
<%= include_gon %>
<%= javascript_include_tag "application" %>
“`

# 使ってみる

“`ruby:****.controller.rb
gon.user_name = ‘my name is imaizumi’
“`

`

元記事を表示

Rails new とは

# Rails new とは #
Railsを使用する際の型を作成するもの

rails new アプリケーション名 

で呼び出す。

rails new sample

rails new sample_app
など

元記事を表示

Docker-composeでbundle installしてるのにgemの内容反映されないんですけど

#注意事項
完全に個人用メモです。公式情報でもなんでもありません。ググってこの記事に来てしまった方はお気をつけください。違っていたら即直しますのでガンガンご指摘ください。(個人用メモなので追加もしていきます)

## そもそもbundle installしたらサーバー再起動しろや

なので、gemfile編集してbundle installしたら以下のコマンド打てば良い(環境によるけど)

`docker-compose restart`・・・コンテナ再起動

そしたらGemの内容が反映されます。

docker勉強不足だって、はっきりわかんだね。

## イメージをビルドしなおしたりコンテナ削除したりしなくて良い

dockerを理解してないと以下のようなコマンドを打ち始めます

`docker-compose build`・・・イメージビルド

`docker-compose up -d`・・・コンテナ作成&起動

結果、コンテナが増えまくるわけです。(えぇ。。。)

コンテナやたら多いと思ったら原因これかよw(錯乱)

まあこの方法でも解決できるんですけどね。。

元記事を表示

ActiveRecord::StatementInvalid: Mysql2::Error: Duplicate column name ‘_id’: ALTER TABLE “ ADD `_id` bigint

#カラムの追加の後にrails db:migrate 
をした際にタイトルのエラーがMysqlにて出て苦戦したので、同じような方がいるかもなのでメモとして残します。

##まず最初に結論からです。エラーの原因は、migrateした際
rails db:migrate:status
up 20200123145035 Create users
up 20200123150804 Create
up 20200124043414 Create
down 20200125060439 Create
down 20200125064510 Create

*downと書かれているファイルならupされてないので問題ないと作り直す為に、削除して作り直した事が原因で
起こりました。downのままですが、追加しようとしたカラムが一部だけ追加されていた事による重複です。

初心者さんで同じような事になる方もいると思いますので、その際しっかりとロールバックまたは、データベースを削除したかのご確認をしてみてください。

元記事を表示

Docker + rails + mysqlで開発環境を構築

## はじめに
今回は、railsの開発環境をDocker+rails+mysqlで用意します。

## 構成
構成はローカルのMacにDockerを立て、webとdbコンテナをdocker-composeで管理します。

![スクリーンショット 2020-01-25 10.06.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134365/d3e1e249-5fbe-f130-0276-c0b2ebb0e8ea.png)

## 開発環境
Docker 19.03.5
Ruby 2.6.5
Rails 5.2.4
MySQL 5.7.29

## 前提条件
Macを利用

## Docker Desktopをインストール

まずは、ローカルのMacにDocker Desktopをインストールします。

https://www.docker.com/get-started

![スクリーンショット 2020-01-22 0.09.31.png](https://qiita-image-store

元記事を表示

メタプログラミング Ruby memo #1

# 概要
現在Rubyを勉強しており、「**Rubyを勉強するならメタプログラミングRubyは必読!**」という先輩からの教えがあり、読んでいるのでそれのまとめメモです。

筆者のRubyに関してのスキルは「プロになるためのRuby」を読んでRailsチュートリアルをさらっとくらいのレベルです。
お見知り置きいただければと。。。

今回はまずメタプログラミングに関してまとめようと思います。

### 個人的レベル感
「上級者向け過ぎてわからないことも多いだろうなあ」とびびっていたのですが案外わかりやすく、ひとつひとつコードを書きながら進めていくと理解が進むような造りになっていると感じました。

翻訳書なので、表現の仕方が基本的に海外よりなので、そこに関して苦手な人は読みづらいかもです…

何かあるごとに開く本というのが誰しもあると思うのですが、個人的にはこの本はそこにランクインするレベルだと思います。

# そもそもメタプログラミングって何?(広い意味での)
– ロジックを直接コーディングするのではなく、あるパターンをもったロジックを生成する高位ロジックによってプログラミ

元記事を表示

【Rails】Railsとdeviseのデフォルトバリデーションを解除する方法

# はじめに
知人がemailの正規表現を使ったバリデーションを自ら作成して設定しようとした際、うまく設定を反映させられませんでした
いろいろ調べたところRailsのバリデーションやらdeviseのバリデーションやらが絡んでいたためでした
今まで知らないで使ってたことなど勉強になったことが多かったので整理してまとめておきます

# 対象読者
– form_withやform_forが何かをなんとなく理解している人
– バリデーションが何かをなんとなく理解してる人

# 環境
– Ruby: 2.5.1
– Rails: 5.2.3

# 状況
– 正規表現で~@~.~という形じゃないとアドレスとして登録できないようなカスタムバリデーションを作成した
– そのバリデーションを有効にしたが、下記の画像のような謎のバリデーションにひっかかった

スクリーンショット 2020-01-25 12.30.17.pngdevise 導入直後のエラー(docker)

#概要
[[*Rails*] deviseの使い方(rails4版)](https://qiita.com/cigalecigales/items/73d7bd7ec59a001ccd74)
このサイト↑に沿ってdevise導入し、そこでこのエラーが発生しました。
その対処法を記載をしています。

#エラーの内容
スクリーンショット 2019-12-26 23.25.40.png

ルーティングエラー
Rails routes で調べても特に問題なさそう・・
[Rails: deviseをインストールした後のエラー](https://qiita.com/penguin_note/items/93b00c09c0da1f1a0eab)
これ↑を実装したが、エラー治らず・・・

#対処法
問題は恐らくdockerなので

元記事を表示

【rails】SystemSpec(capybara) on dockerでつまずいた時のメモ

#Capyabaraの設定方法
https://qiita.com/ngron/items/f61b8635b4d67f666d75
上の記事をもとに設定
#解決したかったこと
**Selenium::WebDriver::Error::UnknownError**を解決して、systemtestを行う

#失敗例
“` Gemfile.
group :test do
gem ‘capybara’, ‘>= 2.15’
gem ‘selenium-webdriver’
end
“`

#成功例
“` Gemfile.
group :test do
gem ‘capybara’
gem ‘selenium-webdriver’
end
“`

#行ったこと
**1、gem(capybara、selenium-webdriver)のバージョン固定を外す。**
gemのバージョンを固定しているといつまでたってもエラー(Selenium::WebDriver::Error::UnknownError)が解決できない。
**2、docker-compose build*

元記事を表示

【翻訳】URI.escapeは非推奨メソッドです。あなたのクエリ文字列をパーセントエンコードするには

この記事は以下のブログ記事の日本語訳です。

[URI\.escape is obsolete\. Percent\-encoding your query string](https://docs.knapsackpro.com/2020/uri-escape-is-obsolete-percent-encoding-your-query-string)

# 【翻訳】URI.escapeは非推奨メソッドです。あなたのクエリ文字列をパーセントエンコードするには

みなさんはRuby 2.7.0を使っているプロジェクトで以下の警告に遭遇しましたか?

“`
warning: URI.escape is obsolete
warning: URI.encode is obsolete
“`

この警告の直し方を見ていきましょう!

## 歴史について少しだけ

Ruby 2.7.0では`URI.escape`またはエイリアスメソッドの`URI.encode`を呼びだしたときに警告が出ます。これはあたかも新しく追加された警告のように見えますが、実際はなんと・・・[10年以上も](htt

元記事を表示

Gem::MissingSpecVersionErrorでrails serverできない

# 問題
「rails server」を実行しようとしたら、エラーが出た。

“`
$ rails server
(Gem::MissingSpecVersionError)
To update to the latest version installed on your system, run `bundle update –bundler`.
To install the missing version, run `gem install bundler:2.1.2`
“`
### 解決策
以下のコマンドを実行する。

“`
$ bundle update –bundler
“`
“`
$ gem install bundler:2.1.2
“`
僕の場合、2つ目のコマンド「gem install bundler:2.1.2」でまたエラーが出たので対処する。
# 問題
「gem install bundler:2.1.2」を実行しようとすると、またエラーが出た。

“`
$ gem install bundler:2.1.2
ERROR: While exe

元記事を表示

【jQuery】RailsでValidation Pluginを使った動的なバリデーションチェックの実装 〜詳細実装/Bootstrap編〜

# はじめに

[前回の記事](https://qiita.com/tiphp452/items/2ac12f7d95a230ef9d02)では導入編をまとめましたので本記事では詳細実装編をまとめます。後半では以下の場合についてもまとめています。

+ Bootstrapを使用している場合
+ deviseを使用している場合
+ 正規表現チェックメソッドのサンプル一覧

# 開発環境
Ruby 2.5.1
Rails 5.0.7.2
jQuery 3.4.1
jQuery Validation Plugin 1.19.1
Bootstrap 4.3.1

# 実装手順

入力フォームを実装済み、プラグインを導入済みであることを前提としています。

## パスワードと確認用パスワードのバリデーションチェック

### 完成イメージ
[![Image from Gyazo](https://i.gyazo.com/d36d27f39c5a2170c757e1d9867cbf61.gif)](https://gyazo.com/d36d27f39c5a2170c757e1d9867cbf61

元記事を表示

OTHERカテゴリの最新記事