- 1. Railsの基礎を使って、メッセージ投稿アプリを作ってみた 【第2章】(3.リファクタリング〜5.バリデーションの設定まで)
- 2. Aws::Sigv4::Errors::MissingCredentialsError
- 3. 【Ruby】ループ処理をより簡潔に書こう(each,map,&:)
- 4. Python,Ruby,PHP,Java,JavaScript,Perlの演算子の比較
- 5. Dockerで「Everyday Rails RSpecによるRailsテスト入門」の環境構築をするメモ
- 6. Ruby on Rails | 俺はform_withと分かり合いたい
- 7. 【Rails6系、ActionCable、デバック】チャットappでチャットが複数送信されてしまう不具合の解消
- 8. 【Ruby on Rails】GUI でのアップロードを介さず CarrierWave にファイルを保存する方法
- 9. Rubyのクラスについて
- 10. Rails初級者が一ヶ月研修を受けて得た学びをまとめた
- 11. Rails初級者が一ヶ月研修を受けて得た学びをまとめた~Rails~
- 12. Rails初級者が一ヶ月研修を受けて得た学びをまとめた~GithubActions・RSpec~
- 13. 【個人開発】少しでも昆虫に興味をもって食べてみたくなるような診断サービスを作った。
- 14. RailsのStrongParametersについて 管理者権限を変更されないようにするため
- 15. Railsアプリにおけるfaviconの設定方法
- 16. Python,Ruby,PHP,Java,JavaScript,Perlの正規表現の比較
- 17. returnはつけるの無粋すぎる
- 18. devise_token_authのメール認証済みでないとログインできない機能をRSpecでテストする方法
- 19. インデントを合わせないのはインシデント
- 20. プログラミングスクールを卒業して思うこと
Railsの基礎を使って、メッセージ投稿アプリを作ってみた 【第2章】(3.リファクタリング〜5.バリデーションの設定まで)
## 概要
前回の記事(第1章)で作成したアプリの続きです。
[Railsの基礎を使って、メッセージ投稿アプリを作ってみた 【第1章】(1.アプリ作成〜2.CRUD処理まで)](https://qiita.com/web_fumiya/items/11c45c5d49fa9ab832c3)今回の第2章では、コントローラの処理のリファクタリング、ビューファイルを部分テンプレートで共通化、フラッシュメッセージの設定&表示、モデルにバリデーションの追加という流れで進めていきます。
## 開発環境
– Ruby 2.7.3
– Rails 6.1.6.1
– Postgresql## 開発手順
1. アプリの作成 (第1章)
2. CRUD処理で簡単なメッセージ投稿アプリを実装 (第1章)
3. リファクタリング (第2章)
4. フラッシュの実装 (第2章)
5. バリデーションの設定 (第2章)
Aws::Sigv4::Errors::MissingCredentialsError
# Aws::Sigv4::Errors::MissingCredentialsError」
AWSのEC2のデプロイで、エラーの原因が分からなくて苦労したので備忘録。
EC2へデプロイ時に「Aws::Sigv4::Errors::MissingCredentialsError」が出るので、
.envに原因があるのでは?と思い、AWS_ACCESS_KEY_IDを小文字から大文字に変えたり、
あらゆる記事で記述方法を確認しても、、ずっと同じエラー文。。。### 結論
先に結論から書きます。アプリのrake secretが、インスタンスを再起動したら、なぜか乱数が変わっていて、エラーが出ていました。EC2のsecrets.ymlを新しく生成されたものを記述し直して、デプロイをすると成功しました。今回私がエラー発生から解決まで打ったコマンド
[ローカル]
“`
$ bundle exec rake secret
“`
→ 乱数をコピーしておく[EC2にて実施]
secrets.ymlファイルディレクトリに移動する。
“`
$ cd /var/www/アプリケーション名/
【Ruby】ループ処理をより簡潔に書こう(each,map,&:)
## はじめに
どうも、もきおです。Rubyのループ処理はfor,each,mapなど色々と選択肢がありますよね。今回はループ処理をより簡潔に書く方法をメモとして残しておきたいと思います。最後に実務でループ処理をどうリファクタリングしていったかを記載しておくので最後までご覧いただけますと幸いです。
## データ作成
まずはデータを作成していきます。今回はnameカラムを持ったuserを作成し、userをループ処理してnameを配列に格納してname一覧を作成するという処理をしていきます。
“`ruby:
class User
attr_accessor :name
enduser1 = User.new
user1.name = “鈴木”
user2 = User.new
user1.name = “佐藤”
user3 = User.new
user1.name = “小林”users = [user1, user2, user3]
“`## eachでループ処理して配列作成
まずはeach文。each文でループ処理して新たな配列に格納するには事前に空配列を定義
Python,Ruby,PHP,Java,JavaScript,Perlの演算子の比較
Python,Ruby,PHP,Java,JavaScript,Perlの演算子の比較
# Python
https://qiita.com/G-Rape/items/cd3f2f284ba990164564
# Ruby
https://www.tohoho-web.com/ruby/operators.html
# PHP
https://qiita.com/mzmz__02/items/8bfbcf2cd48d9e9f2806
# Java
https://qiita.com/suema0331/items/7045e3ce3e2f5faa9acf
# JavaScript
https://qiita.com/uhyo/items/cc92a553059274d85403
# Perl
https://perlzemi.com/blog/20161005147566.h
Dockerで「Everyday Rails RSpecによるRailsテスト入門」の環境構築をするメモ
## はじめに
Everyday Rails の作業をDocker-composeで環境構築し、勉強していくためのメモ
DBはpostgreSQLを利用## リモートリポジトリからのクローン、作業ディレクトリ作成
-bで指定するブランチのコピーができる“`
git clone -b 01-untested https://github.com/JunichiIto/everydayrails-rspec-jp-2022.git
“`ディレクトリに移動
“`
cd everydayrails-rspec-jp-2022
“`## Docker環境の構築の準備
### Dockerfile
Rubyのバージョンは本書指定の3.1
“`
FROM ruby:3.1.2RUN apt-get update -qq && apt-get install -y \
build-essential \
nodejs \
&& rm -rf /var/lib/apt/lists/*RUN gem install bundler
WORKDI
Ruby on Rails | 俺はform_withと分かり合いたい
## form_withとは
RailsでのActionViewフォームヘルパーの一つで、フォームのマークアップを自動生成する際に基本的に使用する。https://railsguides.jp/form_helpers.html
## データの送信先を指定する
特定の画面のフォームから送られてきた値を任意のコントローラーで利用したい場合、以下のように**urlオプション**に名前付きルーティングヘルパーを指定することで、任意のコントローラーに対してデータを送信できる。必要に応じてmethodオプションを付与することで送信時のHTTPメソッドも選択することが可能。
methodオプションに特に指定がない場合のデフォルトのHTTPメソッドとしてはPOSTが指定される。“`ruby
<%= form_with url: users_path, method: :get do |form| %>
<% end %>
“`生成されるHTML
“`html
【Rails6系、ActionCable、デバック】チャットappでチャットが複数送信されてしまう不具合の解消
# 【 前提 】
ActionCableを使用したチャットapp
チャットルームは複数作成可能
この記事は日本酒をガバガバ飲みながら書いているため後々修正が入る場合がございます## 開発環境
Rails: 6.0.3
Ruby: 3.0.1
DB: postgresql, redis
PC: Mackbook Air## デバック前コード
“`ruby:channels/room_channel.js
import consumer from “./consumer”document.addEventListener(‘turbolinks:load’, () => {
console.log(“addEventListener turbolinks:load”)
window.chatContainer = document.getElementById(‘chats’)const element = document.getElementById(‘room-id’);
const room_id = element.getAttribute(‘d
【Ruby on Rails】GUI でのアップロードを介さず CarrierWave にファイルを保存する方法
Rails アプリで画像などのファイルを保存したいと思った際、有力な候補として上がる gem としては [CarrierWave](https://github.com/carrierwaveuploader/carrierwave) などが挙げられるでしょう。
で、多くの記事においては
“`ruby:./app/uploaders/file_uploader.rb
class FileUploader < CarrierWave::Uploader::Base storage :file end ``` ```ruby:./app/models/post.rb class Post < ApplicationRecord mount_uploader :file, FileUploader end ``` ```erb:./app/views/posts/_form.html.erb <%= f.file_field :file %>
“`“`ruby:./app/controllers/posts_controller.rb
class PostsCont
Rubyのクラスについて
Rubyのクラスについて自分の備忘録としてまとめます。
# クラスとは
クラスはデータの入れ物(データそのものではない)とその処理をまとめたものです。# クラスの使用例
例えば、商品の価格と原価のデータがあり、利益を計算したいと思います。## クラスを使わない場合
クラスを使わない場合、次のように計算することができます。
**例1**
“`ruby:shohin_cal1.rb
ringo_name = “りんご”
ringo_genka = 100
ringo_kakak = 200
puts ringo_kakak – ringo_genka #=>100
#putsは引数(文字列)を出力するメソッド。ichigo_name = “いちご”
ichigo_genka = 200
ichigo_kakak = 400
puts ichigo_kakak – ichigo_genka #=>200
“`
例1では、商品の数が多くなると記載する量が多くなってしまいます。また、ringoと記載するべき場所にichigoと記載してしまうなどの間違いをする可能性があ
Rails初級者が一ヶ月研修を受けて得た学びをまとめた
# 前書き
– RubyonRailsで開発している企業にサーバーサイドエンジニアとして転職し、一ヶ月間受けた研修で得た学びを雑に分類してまとめました。
– どの言語でもそうですが独学で初心者向け記事やチュートリアルを読み込むだけでは得られない内容が多くあったのでまとめてみた。これまでこういったまとめを作ったことがなく初めてです。
– 完全に自分のメモ書きですが、 **Railsやコーディングに初めて取り組む人にとっては役立つこともあるかと思いまとめています**## 自分の経験とスキル
– 前職で一年間toB向けWebサービスのフロント+バックエンド+インフラ(ちょこっと)に携わっていた
– NuxtJs+NodeJs、DBはCloudSQLとかとか。
– NodeJsで開発したAPIをコンテナ化してCloudRunにデプロイしたりなどの基本的なことはできる
– Railsは半年ほど前に初めて触った。ORM自体の経験もほとんどない
## 研修概要
– **事前にRailsで自分が開発した簡単なTodoアプリをレビューしてもらい、改善点・問題点を先輩がリストアップ**
– **各項目
Rails初級者が一ヶ月研修を受けて得た学びをまとめた~Rails~
この記事は「[Rails初級者が一ヶ月研修を受けて得た学びをまとめた – Qiita](https://qiita.com/Nifu-Uchi/items/f676d9f082e8c02bd88d)」のRailsに関する項目を切り出した分割記事です
概要などについては親記事を参照してください。# Rubyの文法など基本的なこと
### 配列の種類
– `%i`:シンボル配列。メソッド名、変数名などの配列を作るときに### Hashは省略記法が使える
– Ruby3.1から対応
– [Hashの値の省略記法 – NaCl非公式ブログ](https://nacl-ltd.github.io/2021/12/20/hash-value-omission.html)
– `{ x: x, y:y }` -> `{ x:, y: }`## pp pp puts printの使い分け
– [【ruby】p pp puts print 違い。 – Qiita](https://qiita.com/nyaoo/items/f5d84581d3a301a9c22f)### enumの挙動
Rails初級者が一ヶ月研修を受けて得た学びをまとめた~GithubActions・RSpec~
この記事は「[Rails初級者が一ヶ月研修を受けて得た学びをまとめた – Qiita](https://qiita.com/Nifu-Uchi/items/f676d9f082e8c02bd88d)」のうち分量が多くなりすぎたコード品質担保(LinterやRSpecなど)に関する項目を分割した記事です。
概要などについては親記事を参照してください。# code-checkとGithubAction
– PR時にRSpectとともにLinter/Formatterが走るようにした
– 導入したものは以下
– rubocop
– erblint
– brakeman
– rspec## GithubActions
– [こちらを参照](https://zenn.dev/link/comments/7ece3f5df6eac9)## rubocop
### action-rubocopを使おう
– 指摘箇所があるとPRにコメントしてくれる
– [reviewdog/action-rubocop: Run rubocop with reviewdog ?](
【個人開発】少しでも昆虫に興味をもって食べてみたくなるような診断サービスを作った。
# 最初に
初めまして、エンジニアを目指して勉強中の樋口といいます!いきなりですが、皆さんは昆虫食に対してどんなイメージを持っているでしょうか?
少しでも気になったことはありませんか?昆虫食といってもどんな虫が食べれるんだろう??
初めて食べてみるけど初心者向けの虫はいないかな~といった
疑問に思うことは多々あると思います。そこで、昆虫食に対す疑問を解消するサービス **InsectFood** を作りました。
https://insect-food.jp/
# アプリの概要
昆虫を食べてみたい人が診断を行い、おすすめの昆虫をレコメンドするアプリになります。
# アプリの機能
**昆虫食診断**
診断が始まると5問昆虫に関する診断が始まります。
二社一択形式の診断機能で1点もしくは0点の得点計算を行っています。[![Image from Gyazo](https://i.gyazo.com/8fd79159f2f814968d84272e56d212ea.png)](https://gyazo.com/8fd79159f2f814968d84272e56d2
RailsのStrongParametersについて 管理者権限を変更されないようにするため
## まずStrongParameterとは
StrongParametersとはMass Assignment機能を利用する際、起こり得る脆弱性へ対抗する手段の一つである。
## ではMass Assignmentとは
Mass Assignmentとはモデルの生成や更新の際に、Rubyのハッシュを使って一括で属性を設定できるとても便利な仕組みである。
以下はMass Assignmentを使用せずに個別に値を設定
“`ruby
irb(main):001:0> book = Book.last
irb(main):002:0> book.name = “キングダム”
irb(main):003:0> book.price = 1980
irb(main):004:0> book.save
“`以下はMass Assignment機能を使用し、データを更新
“`ruby
irb(main):001:0> num = {name: “キングダム”, price: 2980}
irb(main):002:0> book = Book.last
irb(main):003
Railsアプリにおけるfaviconの設定方法
## 本記事の対象者
– ファビコンって何?という方
– Railsアプリにファビコンを設定したい方## favicon(ファビコン)とは?
こちらの画像で青い丸で囲ったところのマークのことをファビコンといいます。
![ファビコン](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668589/c7c56360-4037-6fee-15c2-17d322214883.png)
あらゆるWEBサイトにアクセスしてみると、サイトごとにそれぞれのファビコンが設定してあると思います。
ブランディング的観点、信頼性的観点などから設定をしておいた方が良いとされております。## faviconの設定方法
タグ内に下記を追記する。
1. ファビコンとして設定したいロゴを用意して、下記フォルダに格納する。
app/assets/images
1. app/views/layouts/application.html.erbの
“`
<%= favicon_link_tag('FILE_NAME') %>
“
Python,Ruby,PHP,Java,JavaScript,Perlの正規表現の比較
Python,Ruby,PHP,Java,JavaScript,Perlの正規表現の比較
# Python
https://qiita.com/FukuharaYohei/items/459f27f0d7bbba551af7
# Ruby
https://qiita.com/shizuma/items/4279104026964f1efca6
# PHP
https://qiita.com/miriwo/items/da463cfcae441400381a
# Java
https://qiita.com/suema0331/items/5dde9f91671100a83905
# JavaScript
https://qiita.com/iLLviA/items/b6bf680cd2408edd050f
# Perl
https://perlzemi.com/blog/2
returnはつけるの無粋すぎる
こちらはプログラマーなりたてのへっぽこパンピーが、自分の自分による自分のための忘備録として書いてるので、間違いもがあるかもですがあしからず!
# Rubyは基本的に関数内でreturenを記述する必要がない
そもそも、関数内でreturnが必要ないってのは、僕も知ってたんですよ。“`Ruby
#これはたとえ
def addition(x)
x + 1
end
“`
でもかたかたコードを書いた結果、なぜか関数からの返値が**nil**になってたんですよ。
もうその時は、**nanu!?** ってなりましたね。“`Ruby
#これはたとえ
def addition(z)
a = x + 1
return a
end
“`
だからreturnを追加してしっかり値が返るようにしたんですよね。
でもそれがどんなに**非道な行いだと**は思いよりませんでした….結果からいえば、returnいらないよって言われた際に
**「いやでも、値返ってこんかったし」** と心のマリワナ海溝より深いところで思ったので、証明してみたく再度試してみたら、returnを記述しなくても
devise_token_authのメール認証済みでないとログインできない機能をRSpecでテストする方法
はじめに
—
devise_token_authのログイン機能が開発し終わったので現在RSpecでテストを書いているのですが、”メール認証済みでないとログインできない”というテストを書くことができたので、備忘録として残そうと思います。sessions_spec.rbで何をテストするか
—
devise_token_authで設定をすればアカウント作成時にメールで本認証を行わないとログインができない機能を実装することができます。
この”sessions_spec.rb”は、ログイン機能を担当しているので”メールが送信できているか?”などのテストではなくシンプルに、
~~~
・認証が済んでいればそのアカウントはログインできる
・認証ができていなければそのアカウントはログインできない
~~~
という2点が問題なく動作していることをテストで確認できればOKという考えになりました。
アカウントを作成する箇所のテストについては、registrations_spec.rbで記述します。
(その他パスワードやメールアドレスが間違っている場合はログインできない等のテストは書いていますが、認証とは
インデントを合わせないのはインシデント
こちらはプログラマーなりたてのへっぽこパンピーが、自分の自分による自分のための忘備録として書いてるので、間違いもがあるかもですがあしからず!
## コードを記述する時はインデントを合わせるべし
プログラマーからしたら言わずもがなことかもしれないのですが、あだち充の主人公の違いもわからない粗雑な人間は、ついつい微妙にずれてる場合が多い。
“`Ruby
if kazuya_hadnt_died
puts ‘atsuya would not be playing baseball’
end
“`
段落ごとにスペース2つ分あけたら、こうなるやろ
“`Ruby
if kazuya_hadnt_died
puts ‘atsuya would not be playing baseball’
end
“`この微妙な違いに気づかなかった人はドンマイとしか言いようがないが(僕もドンマイ側の人間ではあります)、それだけでは済まされないのです。
>インデントの微妙な違いに気づかない男は、女性の微妙な変化にも気づけない不幸な人間だ
と、アラン・チューリングも言ってたらしいけど、たぶん言
プログラミングスクールを卒業して思うこと
# はじめまして!
私はDMM WEBCAMP COMMIT(以下DWC)を8月に卒業しました[すずしゅん](https://twitter.com/6heouP1HUKGRAJe)と申します。
前職は地方のホームセンターで販売員をしていました。
これからスクールに通おうと考えている方や在校生の参考になればと思い記事にしました?♂️# 目次
* なぜプログラミングスクールに通おうと思ったか
* 1ヶ月目
* 2ヶ月目
* 3ヶ月目
* 4ヶ月目
* 学習中に取り組んだこと
* 学習中に意識していたこと
* スクールの感想
* プログラミングはスポーツと同じだと思う
* 最後に# なぜプログラミングスクールに通おうと思ったか
独学でプログラミングを習得できなかった、つまり挫折したことが大きなきっかけです。
学習をしていくなかでエラー解決ができずに1日過ぎてしまうことがあり、
このまま惰性で続けていても、エンジニアになれないと思っていました。プログラミングスクールは以前から知っていて、興味本位で説明会に出席したのですが、
そこで言われた言葉がとても印象に残っています。