- 1. AWS+Nginx+Unicornを利用してRailsアプリをデプロイしてみた。〜その1〜
- 2. ES6構文をRailsでプリコンパイル
- 3. git push heroku masterできない時の対応
- 4. capybaraでfields_forのformの要素をあいまい検索でテストする
- 5. 困ったらググれ
- 6. RSpecで利用するFactoryBotの導入
- 7. Rails6 decimal型のカラムに格納されたデータの文字数を取得する
- 8. 【Rails】Qiita 週間いいね数ランキング【自動更新】
- 9. 【gon】jsでRails変数を取得する
- 10. Rails new とは
- 11. Docker-composeでbundle installしてるのにgemの内容反映されないんですけど
- 12. ActiveRecord::StatementInvalid: Mysql2::Error: Duplicate column name ‘_id’: ALTER TABLE “ ADD `_id` bigint
- 13. Docker + rails + mysqlで開発環境を構築
- 14. メタプログラミング Ruby memo #1
- 15. 【Rails】Railsとdeviseのデフォルトバリデーションを解除する方法
- 16. devise 導入直後のエラー(docker)
- 17. 【rails】SystemSpec(capybara) on dockerでつまずいた時のメモ
- 18. 【翻訳】URI.escapeは非推奨メソッドです。あなたのクエリ文字列をパーセントエンコードするには
- 19. Gem::MissingSpecVersionErrorでrails serverできない
- 20. 【jQuery】RailsでValidation Pluginを使った動的なバリデーションチェックの実装 〜詳細実装/Bootstrap編〜
AWS+Nginx+Unicornを利用してRailsアプリをデプロイしてみた。〜その1〜
##はじめに
[前回記事](https://qiita.com/President_Taka/items/a55c85996dd6a8a8bb4c)で作成したAWSの環境を利用し、Nginx+Unicornを使用してRailsアプリをデプロイします。
次のアプリがローカル環境と同じように動作するようにデプロイします。##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アプリをプリコンパイルする
はい、怒られました。
原因は
“`
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`の要素をどうやって指定すればいいか困りました。
今回は画像のプラスボタンを押すと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# 状況
– 正規表現で~@~.~という形じゃないとアドレスとして登録できないようなカスタムバリデーションを作成した
– そのバリデーションを有効にしたが、下記の画像のような謎のバリデーションにひっかかった#概要
[[*Rails*] deviseの使い方(rails4版)](https://qiita.com/cigalecigales/items/73d7bd7ec59a001ccd74)
このサイト↑に沿ってdevise導入し、そこでこのエラーが発生しました。
その対処法を記載をしています。#エラーの内容
ルーティングエラー
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