Rails関連のことを調べてみた2019年11月13日

Rails関連のことを調べてみた2019年11月13日
目次

dockerでkaminariを実装する方法。

# rails kaminariの実装方法

kaminariの実装方法は他に多くでまわっているので今回備忘録として記述していきます。

kaminariとはページネーション機能のことでよくブログにみる表示件数を何件表示するか決める機能です。

1.Gemfileにkaminariを追加する

プロジェクト配下にあるGemfileにkaminariを追加しましょう。

“`Gemfile
gem ‘kaminari’
“`

追記したら以下のコマンドを実行

“`
docker-compose build
“`

“`
docker-compose up -d
“`

これでインストール完了。

次に以下のコマンドを実行。

“`
docker-compose exec web rails g kaminari:config
“`

“`
docker-compose exec web rails g kaminari:views
“`

それから表示件数設定を変更する場合は以下の通り

“`config/initializers/k

元記事を表示

Ruby on Rails チュートリアル第6章 ユーザーモデル

#ユーザーモデル
 Railsでは、データモデルとして扱うデフォルトのデータ構造のことをモデルと呼ぶ。RailsではActiveRecordというライブラリを用いてデータベースとやりとりを行い、データモデルのオブジェクトの保存、更新、削除などを行う。また、Railsではデータの定義をRubyで記述でき、SQLを意識する必要がない。データをモデリングする際は、デフォルトでリレーショナルデータベースが使用され、リレーショナルデータベースは、データ行で構成されるテーブルからなり、各行はデータ属性のカラム (列) を持つ。例えばnameとemailを持つユーザーを保存するのであれば、nameとemailのカラムを持つusersテーブルを作成します

元記事を表示

データベースの情報をもとにフォームを作成

#【結論】 form.collection_select

こんな感じのやつが作りたい。

collection_select_form_for.jpg

僕は現在、ものを管理するアプリ「monosiri」を開発しています。
ものを登録する際に、カテゴリーを選択します。
categoriesテーブル一覧からフォームで選べるようにします。

“`html:_form.html.haml
= form_with model: thing, class: “form” do |form|
= form.collection_select(:category_id, @categories, :id, :name, { prompt: “カテゴリーを選択” }, { class: “form__c

元記事を表示

Rails windowsからMacへの移行

awsのクラウドIDEで、railsの環境をwindowsからmacへ移行する際の作業について述べる。
まず、awsのコンソールにログインし、cloud9のIDEを開く。そして、これまで作成していたアプリのディレクトリ下にあるgemfileを開く。

“`ruby:Gemfile
source ‘https://rubygems.org’

.
.

group :production do
gem ‘pg’, ‘0.20.0’
gem ‘fog’, ‘1.42’
end

# Windows環境ではtzinfo-dataというgemを含める必要があります
#gem ‘tzinfo-data’, platforms: [:mingw, :mswin, :x64_mingw, :jruby]
“`
一番下のコメントアウトしている部分はwindows使用時はコメントアウトしていなかったが、mac環境ではここの記述をコメントアウトし、ターミナルでbundle installすれば、これまで作成したアプリのファイル群をmacでもちゃんと機能させることができる。

元記事を表示

【その6〜http→httpsへSSL化編〜】AWS(EC2)にRailsアプリをイチから上げる方法【画像付きで丁寧に解説】

#AWSにRailsアプリをイチから上げるシリーズ 項目表
|No|タイトル|
|:—|:—|
|その1|[ネットワーク、データベース設定編](https://qiita.com/Yuki_Nagaoka/items/975b7598806d6ae0c0b2)|
|その2|[EC2設定編](https://qiita.com/Yuki_Nagaoka/items/5be084c6efe1f797fd94)|
|その3|[サーバー設定、Railsアプリ配置編](https://qiita.com/Yuki_Nagaoka/items/dbb185feb6d4f051c2f2)|
|その4|[Railsアプリの公開編](https://qiita.com/Yuki_Nagaoka/items/1f0b814e52e603613556)|
|その5|[ドメイン設定編](https://qiita.com/Yuki_Nagaoka/items/3020f02d3fd74c8572a0)|
|その6|[http→httpsへSSL化編](https://qiita.com/Yuki_Na

元記事を表示

【その5〜ドメイン設定編〜】AWS(EC2)にRailsアプリをイチから上げる方法【画像付きで丁寧に解説】

#AWSにRailsアプリをイチから上げるシリーズ 項目表
|No|タイトル|
|:—|:—|
|その1|[ネットワーク、データベース設定編](https://qiita.com/Yuki_Nagaoka/items/975b7598806d6ae0c0b2)|
|その2|[EC2設定編](https://qiita.com/Yuki_Nagaoka/items/5be084c6efe1f797fd94)|
|その3|[サーバー設定、Railsアプリ配置編](https://qiita.com/Yuki_Nagaoka/items/dbb185feb6d4f051c2f2)|
|その4|[Railsアプリの公開編](https://qiita.com/Yuki_Nagaoka/items/1f0b814e52e603613556)|
|その5|[ドメイン設定編](https://qiita.com/Yuki_Nagaoka/items/3020f02d3fd74c8572a0)|
|その6|[http→httpsへSSL化編](https://qiita.com/Yuki_Na

元記事を表示

【その4〜Railsアプリの公開編〜】AWS(EC2)にRailsアプリをイチから上げる方法【画像付きで丁寧に解説】

#AWSにRailsアプリをイチから上げるシリーズ 項目表
|No|タイトル|
|:—|:—|
|その1|[ネットワーク、データベース設定編](https://qiita.com/Yuki_Nagaoka/items/975b7598806d6ae0c0b2)|
|その2|[EC2設定編](https://qiita.com/Yuki_Nagaoka/items/5be084c6efe1f797fd94)|
|その3|[サーバー設定、Railsアプリ配置編](https://qiita.com/Yuki_Nagaoka/items/dbb185feb6d4f051c2f2)|
|その4|[Railsアプリの公開編](https://qiita.com/Yuki_Nagaoka/items/1f0b814e52e603613556)|
|その5|[ドメイン設定編](https://qiita.com/Yuki_Nagaoka/items/3020f02d3fd74c8572a0)|
|その6|[http→httpsへSSL化編](https://qiita.com/Yuki_Na

元記事を表示

【その3〜サーバー設定とRailsアプリの配置編〜】AWS(EC2)にRailsアプリをイチから上げる方法【画像付きで丁寧に解説】

#AWSにRailsアプリをイチから上げるシリーズ 項目表
|No|タイトル|
|:—|:—|
|その1|[ネットワーク、データベース設定編](https://qiita.com/Yuki_Nagaoka/items/975b7598806d6ae0c0b2)|
|その2|[EC2設定編](https://qiita.com/Yuki_Nagaoka/items/5be084c6efe1f797fd94)|
|その3|[サーバー設定、Railsアプリ配置編](https://qiita.com/Yuki_Nagaoka/items/dbb185feb6d4f051c2f2)|
|その4|[Railsアプリの公開編](https://qiita.com/Yuki_Nagaoka/items/1f0b814e52e603613556)|
|その5|[ドメイン設定編](https://qiita.com/Yuki_Nagaoka/items/3020f02d3fd74c8572a0)|
|その6|[http→httpsへSSL化編](https://qiita.com/Yuki_Na

元記事を表示

【その2〜EC2設定編〜】AWS(EC2)にRailsアプリをイチから上げる方法【画像付きで丁寧に解説】

#AWSにRailsアプリをイチから上げるシリーズ 項目表
|No|タイトル|
|:—|:—|
|その1|[ネットワーク、データベース設定編](https://qiita.com/Yuki_Nagaoka/items/975b7598806d6ae0c0b2)|
|その2|[EC2設定編](https://qiita.com/Yuki_Nagaoka/items/5be084c6efe1f797fd94)|
|その3|[サーバー設定、Railsアプリ配置編](https://qiita.com/Yuki_Nagaoka/items/dbb185feb6d4f051c2f2)|
|その4|[Railsアプリの公開編](https://qiita.com/Yuki_Nagaoka/items/1f0b814e52e603613556)|
|その5|[ドメイン設定編](https://qiita.com/Yuki_Nagaoka/items/3020f02d3fd74c8572a0)|
|その6|[http→httpsへSSL化編](https://qiita.com/Yuki_Na

元記事を表示

【その1〜ネットワーク,RDS環境設定編〜】AWS(EC2)にRailsアプリをイチから上げる方法【画像付きで丁寧に解説】

#まえがき

先日、Railsで制作したWebアプリケーションを、AWSのEC2にデプロイしました。

最初はHerokuにデプロイして運用していたのですが、表示されるまで時間がかかる事から、AWSへ移行する事を決意しました。

先輩エンジニアの方々が残してくれた記事を参考に作業をしたのですが、バージョン更新に伴う仕様の変更等があり、様々なエラーと格闘し大変苦労しました。

AWSは本当にサービスが豊富です。豊富故に、初学者のエンジニアが手を出すと、何から手をつけて良いのか分からないという側面もあります。

同じ様に大変な思いをされている方がいると思いますので、RailsアプリをAWSへ上げる方法を極力画像付きで分かりやすく紹介致します。

この記事では、「Hello World」と表示されるだけの簡単なアプリ「greeting」をアップロードするまでの過程を
解説していきます。

本記事を制作時点では、AWSは1年間の使用料が無料となっておりますので、是非この無料期間を活用して、AWSへのデプロイに挑戦されてはいかがでしょうか。

AWSへアプリをデプロイした後、ドメインと紐付け、更

元記事を表示

ちょっとした確認で使えるHTTPS ProxyをDockerで作る

ContentSecurityPolicyの導入やCookieのsecure属性付与、URLに含まれるスキーマの確認等、HTTPSを使って確認したくなるシーンが最近増えてきたのでサクッと使えるHTTPS ProxyをDockerで作ってみる。

最初nginx-proxyを使ってみようかと思ったけど、いちいち証明書を作るのも面倒だし、docker.sockを渡したくなかったのでサクッと作ってみることにした。

前提としてアプリやDB等が記載された `docker-compose.yml` があるものとする。

まずDockerfileを作る。アプリのものと混同しないためにファイル名を `Dockerfile.ngix` としている。

“`dockerfile:Dockerfile.nginx
FROM nginx:latest

ARG VIRTUAL_HOST=”localhost”
ENV VIRTUAL_HOST ${VIRTUAL_HOST}

ARG APP_HOST=”http://app:3000″
ENV APP_HOST ${APP_HOST}

RUN mkd

元記事を表示

Railsチュートリアル 第9章[余談] – Rails 5.0 以降、assigns(およびassert_template)は非推奨

# 概要

Rails 5.0 以降においては、`assigns`メソッドの使用は非推奨とされています。`assigns`(および`assert_template`)はRails本体に含まれなくなったため、別途`rails-controller-testing`というgemをインストールする必要があります。

# Railsチュートリアル本文において

そういえば、Railsチュートリアル本文では、[第3章](https://railstutorial.jp/chapters/static_pages?version=5.1#cha-static_pages)で**しれっと**`rails-controller-testing`をGemfileに書き足していました([リスト 3.2](https://railstutorial.jp/chapters/static_pages?version=5.1#code-gemfile_sample_app))。minitest reporters や Guard と違って説明もなかったのですが、ここで必要となるわけです。

“`:Gemfil

元記事を表示

valid?とinvalid?メソッド

# valid?とinvalid?

## valid?
バリデーションが実行された結果
エラーが無い場合`true`を返し,エラーが発生した場合`false`を返す

“` micropost.rb
class Micropost < ApplicationRecord validates :content, presence: true, length: { maximum: 140 } end ``` ``` micropost_test.rb test "content should be at most 140 characters" do @micropost.content = "a" * 141 #=> false
assert_not @micropost.valid?
end
“`

## invalid?
`valid?`とは逆の結果を返す
エラーが発生した場合`true`,エラーが無い場合`false`を返す

## 参考
[Active Record バリデーション – Rails ガイド] (https://railsgui

元記事を表示

[rails]rails newできない[Gem::Ext::BuildError:]

rails newを実行した時に下記のようなエラーが出る場合

“`
Installing mysql2 0.5.2 with native extensions

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

current directory: /Users/user_name/Programs/web/foobar-repo/vendor/bundle/ruby/2.5.1/gems/mysql2-0.5.2/ext/mysql2
/Users/user_name/.rbenv/versions/2.5.1/bin/ruby -r

(中略)

An error occurred while installing mysql2 (0.4.4), and Bundler cannot continue.
Make sure that `gem install mysql2 -v ‘0.4.4’` succeeds before bundling.
“`

##実行するコマンド
`

元記事を表示

Railsを触っていたら”.yml”とかいう謎のファイルが出てきたぞ。簡潔に説明しろ

## 概要

yamlとはなんなのかについて、なるべく簡潔に、わかりやすくまとめてみた記事です。

解釈に間違い等ありましたらなんなりとご指摘いただければ幸いです!

## ざっくりと概要を説明しろ

配列、または連想配列(ハッシュ)を独自の書き方で作成するためのファイルです。

そして、視覚的に読みやすい、という点でよく設定ファイルに使用されているファイル(らしい)です。

“`database.yml

# railsでよく見る”database.yml”

default: &default
adapter: postgresql
host: 127.0.0.1
encoding: utf8
username: postgres
password: postgres

development:
<<: *default database: postgres test: <<: *default database: postgres_test production: <<: *default database: postgres `

元記事を表示

[Ruby]使用頻度は高くないがここぞという時に知っていたら便利そうなメソッドたち

使用頻度は高くないので忘れちゃいそうだけど、ここぞという時に知っていたら便利そうなメソッドを備忘のためにまとめておきます。
(便利かつ高頻度で使うものは忘れないと思うのでここには書きません)

今後も便利そうだと思うメソッドがあったら随時追加していく予定です。

# clamp
数値の上限・下限を制限する

“`ruby
523.clamp(0, 100)
# => 100
“`

# email_address_with_name
action_mailerのtoに<>や”が含まれていた場合、エスケープしてくれる

“`ruby
# <>や”がnameやemailに入っていてもエスケープしてくれる。
mail(to: email_address_with_name(@user.email, @user.name))
“`

# squish
スペースやタブ、改行をいい感じに除去してくれる

“`ruby
” \n foo\n\r \t bar \n”.squish
# => “foo bar”
“`

元記事を表示

【Rails】こわくない!TDD/BDD・テスト自動化はじめの一歩ハンズオン!

# Abstract
TDD/BDDは素晴らしいです!テスト自動化は感動的です!この感動を多くの人に感じてもらいたい!

でも実際、テスト自動化と聞くとハードルありますよね。テストコードって難しいんじゃないかとか、時間かかるし手動でテストすればいいんじゃないかとか。でもそうじゃない!

ということで、この記事ではハードルをものすごく下げて

– TDD/BDDのことを語る
– RailsアプリのE2Eテスト自動化をハンズオンする

をしてみたいと思います。

最初にお断りですが、E2EテストをするためのRSpecやCapybaraのいろいろな使い方については語らないです。そのあたりは

– [RSpecチートシート – Qiita](https://qiita.com/morrr/items/6ed889d17abbfd352649)
– [Capybaraチートシート – Qiita](https://qiita.com/morrr/items/0e24251c049180218db4)

などがとても参考になるので…
同じ操作・検証をするにも色々な書き方があるので、今回の記事の

元記事を表示

rails newする時にActive Jobをスキップできない理由

# rails newのスキップオプション

railsアプリを新規で作成する時に実行する`rails new`ですが、不要な初期設定がある場合は`rails new –skip-active-storage`の様にスキップする事ができます。

skipで指定できるオプションは以下のファイルで確認できます。
https://github.com/rails/rails/blob/master/railties/lib/rails/generators/app_base.rb#L33-L85

## –skip-active-jobが見当たらない

ですが、`–skip-active-job`の指定ができないので、調べてみました。

githubで調べた所、以下のPRを発見
https://github.com/rails/rails/pull/16584
内容を見てみると、

> Active Job is like Active Model. It defines an API that can be used for other components of Rails. If

元記事を表示

rails 発展その13 画像について

railsの画像に関する内容です。

# ImageMagick

ImageMagickは、コマンドラインから簡単に画像の保存形式の変更などが行えるツールです。

ターミナル

“`bash:ターミナル
$ brew install imagemagick
“`
ImageMagickがインストールできたら、mini_magickをインストールします。
gemfileに追記しましょう。

“`ruby:gemfile
gem ‘mini_magick’
“`
次にターミナルでbundle installします。

“`bash:ターミナル
$ bundle install
“`

# Active Storage

rails active_storage:installコマンドを実行すると
Active Storageが使用するテーブル用のマイグレーションファイルが作成されます。

“`bash:ターミナル
$ rails active_storage:install
$ bundle exec rake db:migrate
“`

Active Storage

元記事を表示

rails 発展その12 カラムのデータまとめかた。

コントローラーからデータをいかに処理してまとめられる
備忘録を書きます。

## groupメソッド

groupメソッドはテーブルのレコードを指定したカラムでまとめることができます。

“`ruby
モデル.group(カラム名)

# 例
Rei.group(:product_id)
# これでproduct_idの21,22,23,などにまとめられ格product_idの先頭が出力されます。

“`

## countメソッド
countメソッドは配列などの要素数を返すメソッドです。

“`ruby
Rei.group(:product_id).count
=> {21=>2, 22=>1, 23=>4}
“`

## order(‘count_カラム名’).count(カラム名)
countメソッドの引数にカラム名を指定することができます。
するとorderメソッドでcount_カラム名でのソートが可能となります。
これはそのカラムを持つレコードの数でソートするという意味です。

**ここでlimitの注意点です**
count(:product_id)の時点

元記事を表示

OTHERカテゴリの最新記事