【Ruby】正規表現
本日は正規表現についてまとめました!
正規表現とは
文字列に特定の文字が含まれているかを確認する事や、
特定の文字を取り除く等の操作を行うための技術のこと。
例えば「入力された電話番号のハイフンを取り除く」や
「パスワードに英数字○文字以上」の制約を設定する時に使います。
特徴
・文字列の一部分を置換
例えば、電話番号のハイフンをから文字に置換することで
異なるフォーマットの文字列を同一フォーマットに変換できる!
・文字列が制約を満たしているか調べる
ユーザ登録の際に設定するパスワードにおいて8文字以上という
制約をつけたい時にも正規表現を用いて実装できる!
・文字列の一部分を抽出する
入力されたメールアドレスからドメイン部分のみ抽出したい時等に使用!
正規表現を実現する2つのメソッド
・subメソッド
文字列の指定した部分を別の文字列に置き換える。
第一引数に置き換えたい文字列、
第二引数に変換後の文字列を指定。
操作したい文字列は「/」で囲む。
※JSでは同じ機能を持つメソッドしてreplaceメソッドがある。
・matchメソッド
引数に指定した文字列がレシーバの文字列に含まれているか否かを
チェックするためのメソッド。
含まれている→指定した文字列がMatchDataオブジェクトの
返り値として得られる。 #<MatchData "〇〇">
含まれていない→返り値としてnilが得られる。
MatchDataオブジェクト
マッチした文字列等はMatchDataオブジェクトで返される。
MatchDataオブジェクトから文字列等を取り出す時、
配列からデータを取り出す時と同様に取り出せる。
電話番号のハイフンを取り除く
特定の文字列を取り除く、つまり「特定の文字をから文字に置換する」
という考え方。
subメソッドでは最初のハイフンしか置換されないので。
gsubメソッドを使う。
※gsubのgはグローバルマッチの「g」
文字列内で指定した文字が複数含まれている場合、
「その全てを置換する」という意味になる。
パスワードに英数字8文字以上という制約を設定
[a-z]‥‥‥角カッコに囲まれた文字のいずれか1個にマッチ
\d‥‥‥数字にマッチ
{ n, m }‥‥‥直前の文字が少なくともn回、多くてもm回出現するものにマッチ
i‥‥‥大文字・小文字を区別しない検索
実践的な利用例
メールアドレスからドメイン部分のみ抽出
. ‥‥‥どの1文字にもマッチ
+‥‥‥直前の文字の1回以上の繰り返しにマッチ
「.+」は何かしらの文字が1回以上繰り返すものにマッチする
「@.+」で「@から始まり何かしらの文字が1回以上繰り返すものにマッチ」
という意味になる。
よってメールアドレスからドメイン部分のみを抽出できる。
メールアドレスにバリデーションをかける時の記述例
【Heroku】git push がrejectされる時の対処法
が通らない時の対処法
①プルする
②リモートの変更をマージ
③リモートの変更後、自分の変更を持ってくる
ちなみに以下は他の場面で役立ったコマンドです.。
heroku(本番環境)でのマイグレーション
参考記事
https://www.softel.co.jp/blogs/tech/archives/3569
【Rails】Heroku 本番環境での環境設定
Herokuの無料版は一定時間で画像が消えていくため、
画像を保存するためのストレージが必要です。
以前S3を使用していたので、今回はそれを使い回す事にしました!
ローカル環境設定をサクサク進みそういえば本番環境は?となった時、
Herokuめちゃくちゃ簡単に設定できちゃう事に気付いてしまった・・・
手順
①herokuのサイトを開き、ログインする
②本番環境の環境設定をしたいダッシュボードを選択
③Settingを選択
④Config Varsの右側にあるReveal Config Varsをクリック
⑤KEYに「AWS_ACCESS_KEY_ID」、VALUEに該当のIDを記入→Addで追加
⑥「AWS_SECRET_ACCESS_KEY」も同様にAddで追加
これで終わり!
本番環境で反映されていれば、
本番環境での投稿画像がS3に反映されるはずです!
ちなみにうまくKEYが入っていない時に
画面自体表示されないエラーが出たのですが、
ターミナルで
を実行するとエラーを吐き出してくれました。
TECH CAMP短期コースを受講して
TECHCAMPは、右も左もわからない人に
1本の道標を描いてくれる場所
こんにちは!
本日は
「TECH CAMP短期コース」
を約2ヶ月間受講した率直な感想を書いていこうと思います!
私は2020年6月末からの受講期で、ちょうどコロナ感染が拡大してきた頃です。
教室利用は週2回に制限され、技術的な質問は全てオンラインでした。
チーム開発がスタートするまでは教室利用なしで十分に学べましたが、
やはりチーム開発がスタートするとコミュニケーションが大切になってきます。
(※※※私たちの受講期で最終課題のチーム開発は終了)
週2回だけでも教室利用が出来たこと、
チーム開発に携われたことはとても大きな経験となりました。
今後チーム開発がなくなるのは、とても残念に思います。
TECH CAMPのいいところ
①仲間がいること
個人学習中もチームでアウトプットをしたり、共に学べる仲間がいます。
焦りや励みが自分の力になります。
当たり前ですが、どこまでやり切れるかは自分次第です。
②わからないことは質問できる
多くのメンター(技術面のサポーター)が所属しており、
オンラインで質問ができます。
学習中、何度も助けていただきました。
質問の際にはプログラミング学習の仕方や質問の仕方、
それによって自分の理解できていない部分をどう掘り下げていくのかも
教えていただきました。
TECH CAMPで苦労したところ
①メンターの技術力に差がある
学習内容が応用編になってくると、質問にうまく答えられない方もいます。
私はまだ駆け出しではありますが、
学習をしているとそれも仕方ないという事もよくわかる一方で、
やはり高いお金を払っている以上、技術力の高さは求めてしまいます。
②メンターから間違った答えをもらう事もある
別のメンターのアドバイス通りにやっていると結局実装できず、
他のメンターに再度質問すると「それは違いますね」と言われた事があります。
その気付きもまた一つの学習ではありますが・・・泣
TECH CAMP受講前におすすめすること
Progateかドットインストールをある程度勉強することをおすすめします。
正直なところカリキュラムの説明文を読んだだけでは分からなかっただろうな・・・
と思った事があります。
しかし、決してTECHCAMPのカリキュラムが良くないということではなく、
知識量を増やすために様々なサービスを利用して知識の幅を広げていくのが
大切だということです。
カリキュラム修了後、プログラミング言語の復習も兼ねて
またドットインストールをやってみようと思っています。
TECHCAMPの広告で
「独学の限界を感じたら!」と言うキャッチコピーを耳にします。
独学の限界とは、
・学習を続けていくメンタル
・技術的な問題に直面した時の打開策が見つからない
主にこの2点だと感じます。
再度言いますが、
結局のところ自分でどこまでやり切るかです。
毎日約10時間の学習を2ヶ月ほど続けTECHCAMPを卒業しても
まだスタート地点に立ったに過ぎません。
これからはこの経験を活かしつつ
エンジニアとしての技術力をどこまで高められるか・・・
常に自分との戦いです。
私は「土日も休まず学習したこの2ヶ月間が今後もずっと続くかもしれない」
と考えても苦痛ではありません。
それだけの覚悟を持ってやっています。
・・・
なんて偉そうに言いましたが、まだまだ自分の理解不足にガッカリする毎日です。
自分を奮い立たせながら、これからも学習がんばっていきます。
結論!!!!
TECHCAMPに感謝です!!!
(オチなし!)
【GitHub】画像ファイルをpushしてしまった場合の対処法
画像をGitHub管理下から外したい場合、
ターミナルで以下のコマンドを実行することでファイルを削除できます。
例:% git rm --cached -r public/uploads
本来でしたら.gitignoreに「public/uploads/*」の記述をしておけば
画像ファイルは無視されるようになるのですが、
記述以前のアップロードはGitHubに反映されてしまいます。
ちなみにpush前に画像の存在に気づいた場合
GitHubDesktopで該当の画像を2本指クリックし
「Discard Changes...」を選択後「Discard Changes」をクリックすると
修正中の内容を1つずつ取り消せます。
「changed files」の部分を2本指クリックすると「Discard All Changes...」
を選択することもできますが、目的のファイル以外を消さないように
お気をつけください・・・。
【Rails】レンダリング時のビュー崩れを一瞬で解決!
バリデーションを設定し、
画像と名前が空の状態で投稿ができないようにした。
posts_controller.rb
しかしrenderメソッドで部分テンプレートを呼び出すと
ビュー崩れが起こる。
原因
検証ツールで確認すると、
部分テンプレート呼び出し後に問題の起こったclassが
field_with_errorsというクラス名のdivタグで囲まれていた。
解決策①
ビュー崩れを起こすCSSファイルに以下の記述を追加する。
解決策②
field_with_errorsクラスが自動挿入されないように以下を記述する。
config/application.rb
サーバーを再起動するとビュー崩れがなくなる。
解説
バリデーションエラーを表示させる際にエラーが起こったのは、Railsが元より
エラーメッセージを含むフィールドを
自動的にfield_with_errorsクラスを持つdivタグで囲むためです。
以上!
少しでも参考になれば幸いです!
参考URL↓
https://yukimasablog.com/rails-field-with-errors