- 1. rails5中級チュートリアルのテストがうまく通らなかった時
- 2. リダイレクトはしたい。だがQueryParameterは失いたくない。
- 3. Ruby on Railsのシード機能についてのメモ
- 4. herokuでのArgumentErrorの解決
- 5. DockerでRailsチュートリアルのローカル開発環境構築 – RSpec導入 & CircleCIでHerokuデプロイ-
- 6. Rails開発で役立つVSCodeの拡張機能
- 7. GitHubでMiniMagickの脆弱性アラートが出た際の解決方法
- 8. Docker 公式ドキュメントの Rails Quickstart 完全解説
- 9. 【webpacker】Rails6.0でのBootstrap, jQueryの導入方法まとめ
- 10. AWS Copilotを使ってRailsコンテナの本番環境を爆速で構築する
- 11. Active Storage 導入環境下での単体テスト
- 12. Railsのxmlのフォーマット調整でハマったこと
- 13. TodoじゃなくてNoTodoアプリをリリースした。。(とridgepoleの注意点)
- 14. Googleアナリティクスを活用し、サイト分析を行う-1章
- 15. Rails Webpacker configuration file not found
- 16. 【勉強用】Apacheとかnginxとかunicornとかpassengerとか(おまけにリバプロ)
- 17. Rails6でPG::ConnectionBadというエラーが出た原因と対応
- 18. バリデーションのエラーメッセージの個別表示
- 19. 2人でRailsアプリケーション開発をしてみて
- 20. DockerでRailsチュートリアルのローカル開発環境構築(Rails 6 + PostgreSQL + Webpack)
rails5中級チュートリアルのテストがうまく通らなかった時
### 前提・実現したいこと
[rails5中級チュートリアル](https://techracho.bpsinc.jp/hachi8833/2018_02_21/51678)を行なっています。
チュートリアルの3-3でのテストの部分で
昨日から以下のエラーが発生し、テストをパスすることができず、困っていた。### 発生している問題・エラーメッセージ
ターミナルでのrspec spec/features/user/login_spec.rb実行時
“`ruby
1) Login ユーザーがloginページにリダイレクトされ、ログインに成功する
Failure/Error: expect(page).to have_selector(‘#user-settings’)
expected to find css “#user-settings” but there were no matches
# ./spec/features/user/login_spec.rb:13:in `block (2 levels) in
リダイレクトはしたい。だがQueryParameterは失いたくない。
そんな時はこう。
“`
get ‘/users/new’, to: redirect(path: “users/sign_up”)
“`Parameterは据置でpathだけ変更してくれるのさ。
Ruby on Railsのシード機能についてのメモ
# はじめに
初心者です。
RubyとRuby on Railsを使ってアプリケーションを作っています。
備忘録も兼ねておりますので、間違いなどあればご指摘ください。# シード機能とは
データベース作成後に、初期データを簡単に流し込むことができる機能。
# どのファイルを使うのか
`db/seeds.rb`に初期データとして流し込みたいコードを記述して、
ターミナルで`rails db:seed`すればOK。
実行してもターミナルに何か表示されるわけではないが、データに問題なければ流し込まれているはず。#ファイルにはどう記述するのか
例)productsテーブルのnameカラムとdescriptionカラムにデータを5つ流し込む
“`ruby
5.times do |i|
Product.create(name: “Product ##{i}”, description: “A product.”)
end
“`timesメソッドを使っているが、1行ずつ書いていっても問題なし。
# まとめ
– シード機能はデータベース作成後に初期データを流し込むこと
herokuでのArgumentErrorの解決
# herokuでのArgumentErrorやErrno::ECONNREFUSED: Connection refused – connect(2) for action mailerの解決
メモ用に残しておく
ArgumentError in Users::Registrations#createというerrorが発生
こんな感じにconfig/environments/development.rbに書いてあった文をproduction.rbに移してサーバーを再起動するだけだった。
“`production.rb
config.action_mailer.default_url_options = { protocol: ‘https’, host: ‘https://〇〇〇〇.com’ }
config.action_mailer.raise_delivery_errors = true
config.action_mailer.smtp_settings = {
port: XXX,
address:
DockerでRailsチュートリアルのローカル開発環境構築 – RSpec導入 & CircleCIでHerokuデプロイ-
# はじめに
前回の記事
[DockerでRailsチュートリアルのローカル開発環境構築(Rails 6 + PostgreSQL + Webpack) – Qiita](https://qiita.com/daddy_hacker/items/99225bf3d8665ecfdec2)個人開発アプリ
[mdClip <オンラインmarkdownエディタ>](https://mdclip.xyz/)前回の記事に続いて、Railsチュートリアルのローカル開発環境構築を行っていきます。
– Railsチュートリアル最新版(2020.8.6現在)に対応のRails 6
– Dockerを使用し、開発環境の再現が可能
– なるべくローカル環境にインストールしない
Docker環境で操作する場合はターミナルのコマンドを適宜
“`
$ docker-compose run app …
“`もしくは
“`
$ docker-compose exec app …
“`で置き換えてください。
# Rspec導入
minitestでも問題ないです
Rails開発で役立つVSCodeの拡張機能
#プログラミングの勉強日記
2020年8月7日 Progate Lv.226
VSCodeでRailsアプリケーション開発するうえで便利だなと思った拡張機能をまとめてみる。#VSCode拡張機能のインストール方法
1. 左端のバーから拡張機能を選択する
2. 検索ボックスにインストールしたい拡張機能の名前を入力
3. インストールしたい拡張機能を選択し、インストールをクリック#Rails開発で便利な拡張機能
##[Ruby](https://marketplace.visualstudio.com/items?itemName=rebornix.Ruby)
Ruby言語のサポートをする。Rubyのベーシックなシンタックスハイライト(テキストエディタなどの文字表示に関する機能の1つ
GitHubでMiniMagickの脆弱性アラートが出た際の解決方法
# 現象
RailsアプリをGitHubにプッシュした所、mini_magickに関する脆弱性のアラームメールが届いた。
解決までの備忘録として残しておく。# 問題と原因
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/682425/f88633c3-138c-1b64-e812-955d34597094.png)
mini_magickのバージョンが古く、フェッチされたリモートイメージファイル名がリモートコマンドの実行を引き起こす可能性があるとのこと。
解決するには、バージョンをアップグレードすれば良さそう。## GemFileを編集する
“`ターミナル:Gemfile
gem ‘mini_magick’, ‘3.8.0’
“`現在のMiniMagickのバージョンは、3.8だったので
アラートにて提示されているように4.9.4以降をインストールするように修正する。“`ターミナル:Gemfile
gem ‘mini_magick’, ‘>= 4.9.4’
“`
Docker 公式ドキュメントの Rails Quickstart 完全解説
Docker の公式ドキュメントに Rails の Quickstart があります:
[Quickstart: Compose and Rails | Docker Documentation](https://docs.docker.com/compose/rails/)こちらのドキュメントを参考に Rails を始める方が増えており、
Tetatail で結構な件数の質問に回答しました。この Quickstartは説明が不十分だったり間違いがあったりで
Rails に慣れてないと行間を読んで正しい手順を踏むことは難しいでしょう。この記事で指摘している Quickstart の間違いなどは、すでに GitHub 上で PR を投稿しています。
[Yukihiko shinoda/update quickstart rails by yukihiko-shinoda · Pull Request #11215 · docker/docker.github.io](https://github.com/docker/docker.github.io/pull/11215)
【webpacker】Rails6.0でのBootstrap, jQueryの導入方法まとめ
RailsへのBootstrapとjQuery導入方法は、
– 今までもあったGemを使った方法
– 6.0からのWebpackerを使った方法と2つあるが、今回は*後者*の方を採用する。
#参考対象者
– Rails6.0で、bootstrapやjQueryを使いたいなと思っている方#環境
“`
$ rails -v
Rails 6.0.3.1
“`
“`
$ ruby -v
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-darwin19]
“`#Webpakerでパッケージを管理
“`
$ yarn install jquery popper.js bootstrap
“`Railsでは、BootstrapはjQueryとpopper.jsというパッケージに依存しているため、一緒にインストールする。
また、パッケージ類は**node_modulesディレクトリ以下**にインストールされる。#bootstrapの導入
###Webpackの設定
“`config/webpa
AWS Copilotを使ってRailsコンテナの本番環境を爆速で構築する
# やりたいこと
Amazon ECSで動くRails本番環境を手軽に作りたい。# やりたくないこと
– ECSを動かすためのネットワーク構築やロードバランサーの設定
– AWSコンソールを利用したコンテナのデプロイ
– 複雑なCI/CDフローの構築### →こういうときにはAWS Copilot!
# AWS Copilot
AWSでコンテナ化されたアプリケーションの開発、リリースを容易に行うためのコマンドラインツールです。
コマンドを叩くとCloudFormationが動き、必要なリソースの作成やデプロイを行うことができる。CI/CDパイプラインもコマンド一つで作成できます。※Fargate起動タイプのみサポートしています
### Copilotを支える概念
Active Storage 導入環境下での単体テストまずActive Storageって何?
ファイルアップロードを行うための機能で、
これを使えばフォームで画像の投稿機能などが簡単に作れる。
また、クラウドストレージサービスへのファイルのアップロードも
簡単にできちゃいます。自分の場合は画像をアップロードできる機能があるアプリケーションを作成していたので、
Active Storageを導入していました。
特徴としては画像用のカラムを用意する必要がないこと。
今回はこの特徴で、エラーがでまくっていたのですが…##本題のテストのこと
今回のエラーの原因は
“①FactoryBotで、ダミーのimageデータを作ってしまっていた“
“②spec.rbで、fixture_file_uploadメソッドを使っていなかった“以上の2つが主な原因でエラーを吐きまくっていました。
特に②に関しては、見当違いのことを調べていたばかりに中々たどり着きませんでした..
—
それでは①から。
例えばproductというモデル/テーブルがあるとして
`Active Storageを使っていない場合`
imageカラム(
Railsのxmlのフォーマット調整でハマったこと
Railsでxmlを表示させるときに`type=”integer”`や`nil=”true`がつかないように対応したときのメモです。
“`rb
def index
…(処理)…
render xml: data
end
“`
のようにxml形式で出力するときに以下のデータ|カラム|値|
|—|—|
|id|1|
|name|太郎|
|name_kana|タロウ|
|age|20|
|notice|nil|を表示させると
“`xml
“`
といった形で、
1. 文字列以外の要素にデータ型を示す属性が入る
2. キーのアンダーバーがハイフンになる
3. 値がない要素にnilという属性が入るのようになりました。
要件でフォーマットが決まっている場合などはこのままだと
TodoじゃなくてNoTodoアプリをリリースした。。(とridgepoleの注意点)
## 前書き
https://notodoo.herokuapp.com/
今回、NoTodoというwebアプリを作りました。Todoリストを作って「やることが多すぎる!」と感じたことはありませんか?
しかし逆にやらなくてもいいことも多くないですか
無駄なことを減らせば本当にやらなければいけないことに時間をさくことができます。
このwebアプリはそんな「しないことリスト」(NoTodo)をつくるためのものです。ツイッターでリストを公開することも出来ます。[NoTodo>](https://notodoo.herokuapp.com/)
##使った技術
rails6
heroku hobbyプラン(freeだとスリープするのがつらい)
ドメインは取得してません。使ったgem(一部省略してあります)
“`
gem ‘rspec-rails’
gem ‘factory_bot_rails’
gem ‘ridgepole’
gem ‘devise’
gem ‘omniauth-facebook’
gem ‘omniauth-google-oauth2’
gem ‘doten
Googleアナリティクスを活用し、サイト分析を行う-1章
### 背景
現在デプロイしているサイトが自分以外のユーザに見ていただいているのか、経緯やアクセス数を調査したく、グーグルアナリティクスを導入することにしました(ちょっと噛みそうになります…笑)
今まで、gitのトラフィックなどから、自分のポートフォリオサイトのアクセスを確認していたのですが、アナリティクスを使用していろいろと傾向を調査していきたいと考えています。※この記事は、アナリティクスを設定してから、約1時間ほど経過しました。まだ分析結果が表示されないのですが、もう少し、待ってから状況を報告したいと思います(長ければ24時間かかるとのことです。)
表示結果や、手順の修正情報等々はおって掲載します。### 環境
| 項目 | 内容 |
|:—————–|:——————:|
| OS.Amazon Linux AMI |
Rails Webpacker configuration file not found
###発生条件
rails6で新規アプリを作るとそうなるrails webpacker:install
↪︎yarn not installed.brew install yarn
↪︎brew command not found.Homebrewをインストール
###用語解説
webpacker -> railsでwebpackを使えるようにするためのgem。node.jsのモジュールの1つ。rails6からwebpackerが初期設定で搭載されるようになった。webpackはjs,css,画像といったモジュールをまとめてくれるツール。これにより管理しやすくなるだけでなく、webの読み込み速度が上がる。yarn -> node.jsのパッケージマネージャ。webpackerを使うために必要。パッケージマネージャとは、多くのプログラムをまとめるパッケージを管理するツール。フレームワークやwebpackのようなモジュールバンドラーなどの多くのプログラムで構成されているモノを速くインストールすることができる。パッケージマネージャがない場合手動でパッケージを管理しなければい
【勉強用】Apacheとかnginxとかunicornとかpassengerとか(おまけにリバプロ)
#勉強用
自己学習の為にQiitaに残していきたい##Webアプリケーションの流れ
###静的なサービス
– Webブラウザのリクエストに対して、Webサーバが結果を返す
– webブラウザ ⇄ Webサーバ###動的なサービス
– Webブラウザのリクエストに対して、Webサーバがアプリケーションサーバにリクエストを送り、返ってきた結果をwebブラウザに返す
– Webブラウザ ⇄ webサーバ ⇄ アプリケーションサーバ ⇄ アプリケーション
– Webブラウザのリクエストに対して、webサーバがモジュールを通してプログラムを実行し、返ってきた結果をWebサーバに返す
– Webブラウザ ⇄ Webサーバ(モジュール) ⇄ アプリケーション##Webサーバ
例)Apache、nginx##アプリケーションサーバ
Webサーバから受け取ったリクエストを元に、Rubyなどを実行し、Webサーバに結果を返す
例)unicorn、Puma※passengerは?
Apacheやnginxのようなwebサーバに組み込んで使えるモジュール。
R
Rails6でPG::ConnectionBadというエラーが出た原因と対応
## エラーが出た手順
`rails s`でWebサーバー起動
↓
`http://localhost:3000/` にアクセスすると
PG::ConnectionBadというエラーが出た
↓|![3C20CC71-D23D-4497-A685-5704DA0F704A.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538652/41f55d93-6a23-5303-83fd-89a5758af273.png)|
|:—|## 原因
db(PostgreSQL)のほうはdockerで立ち上げる構成だったのだけど
立ち上げ忘れていたので、dbに接続できない状態だった。## 対応
`docker-compose up -d`でDBを起動する## 確認
webページの再読み込み
↓
正常に表示された OK!
バリデーションのエラーメッセージの個別表示
自分用です!!
バリデーションでのエラーメッセージをviewで表示していきます。
例えば、userを登録するときに、passwordとnameにpresence: trueのバリデーションをかけた、状態でパスワードとnameを空欄で登録すると、バリデーションに引っかかります。
railsのオブジェクトは、デフォルトでエラーオブジェクトを保持しているので、画像のようにエラーメッセージを取得できます。
ここでエラーメッセージが日本語化されているのは、i18nの働きによるものです。
さらに、full_messagesというメソッドを使用することで、エラーメッセージだけを取り出すことができます。
![スクリーンショット 2020-08-06 3.06.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/675654/bde05ac4-a73b-c1d9-a229-fdab7a5d6aa7.png)
エラーメッセージは、色々な入力フォームで使いたいので、パーシャルを使います。
“`ruby:_
2人でRailsアプリケーション開発をしてみて
#プログラミングの勉強日記
2020年8月6日 Progate Lv.226
フロントエンドエンジニアを目指して独学で勉強を始め、アウトプットのためにポートフォリオなど個人開発をしていた。
チーム開発の経験を積むべきというアドバイスを聞き、2人でRailsでアプリケーションを作成した。アプリケーションを完成することができたので、簡単にまとめてみる。#開発環境
Rails 5.1.7
VScode
バージョン: 1.46.1 (system setup)
コミット: cd9ea6488829f560dc949a8b2fb789f3cdc05f5d
日付: 2020-06-17T21:13:20.174Z
Electron: 7.3.1
Chrome: 78.0.3904.130
Node.js: 12.8.1
V8: 7.8.279.23-electron.0
OS: Windows_NT x64 10.0.18362#開発の進め方
VscodeのRemote Development 拡張機能を使って、VSCode からインターネット経由で同じサーバーを使ってログインする
DockerでRailsチュートリアルのローカル開発環境構築(Rails 6 + PostgreSQL + Webpack)
# はじめに
最新(2020.8.5現在)のRailsチュートリアルではRails 6が使用されており、
これに対応した開発環境構築をDockerでやってみたいと思います。個人開発アプリの開発環境構築の際に、
私は新しいものが好きだから…とRails 6を導入しました。ところが…このRails 6からJavaScriptのモジュールバンドラーにWebpackが導入されたことにより、
BootstrapやFontawesomeといったツールの導入、管理方法が変わるだけでなく、
そもそも環境構築の際もRails 5では必要ない手順が必要だったりと、
Rails 6とWebpackの壁に盛大にぶつかることとなりました…せっかくなので、今回の試みを経て、知識、経験の整理定着を図りたいと思います。
また、実際にRailsチュートリアルを脱線しながら再走し、学びを深められたらと思っています。
個人開発アプリ
[mdClip <オンラインmarkdownエディタ>](https://mdclip.xyz/)以前Rails 5の環境構築をDockerでやってみた記