- 1. dockerでkaminariを実装する方法。
- 2. Ruby on Rails チュートリアル第6章 ユーザーモデル
- 3. データベースの情報をもとにフォームを作成
- 4. Rails windowsからMacへの移行
- 5. 【その6〜http→httpsへSSL化編〜】AWS(EC2)にRailsアプリをイチから上げる方法【画像付きで丁寧に解説】
- 6. 【その5〜ドメイン設定編〜】AWS(EC2)にRailsアプリをイチから上げる方法【画像付きで丁寧に解説】
- 7. 【その4〜Railsアプリの公開編〜】AWS(EC2)にRailsアプリをイチから上げる方法【画像付きで丁寧に解説】
- 8. 【その3〜サーバー設定とRailsアプリの配置編〜】AWS(EC2)にRailsアプリをイチから上げる方法【画像付きで丁寧に解説】
- 9. 【その2〜EC2設定編〜】AWS(EC2)にRailsアプリをイチから上げる方法【画像付きで丁寧に解説】
- 10. 【その1〜ネットワーク,RDS環境設定編〜】AWS(EC2)にRailsアプリをイチから上げる方法【画像付きで丁寧に解説】
- 11. ちょっとした確認で使えるHTTPS ProxyをDockerで作る
- 12. Railsチュートリアル 第9章[余談] – Rails 5.0 以降、assigns(およびassert_template)は非推奨
- 13. valid?とinvalid?メソッド
- 14. [rails]rails newできない[Gem::Ext::BuildError:]
- 15. Railsを触っていたら”.yml”とかいう謎のファイルが出てきたぞ。簡潔に説明しろ
- 16. [Ruby]使用頻度は高くないがここぞという時に知っていたら便利そうなメソッドたち
- 17. 【Rails】こわくない!TDD/BDD・テスト自動化はじめの一歩ハンズオン!
- 18. rails newする時にActive Jobをスキップできない理由
- 19. rails 発展その13 画像について
- 20. rails 発展その12 カラムのデータまとめかた。
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
こんな感じのやつが作りたい。
—
僕は現在、ものを管理するアプリ「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:latestARG 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 extensionsGem::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: postgresdevelopment:
<<: *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)の時点