- 1. authenticate_user!メソッドの使い方
- 2. Docker を使ってRuby on Railsの開発環境を構築(M1チップのMac)
- 3. 【Rails 6】ActiveJob + S3 + Lambda + Slack で実現する非同期 CSV ダウンロード
- 4. 入社2週間の新人が研修で社内アプリを作った話
- 5. 新規Railsプロジェクトの作成〜localhostに接続するまで
- 6. railsチュートリアルをなるべく嚙み砕く 1章
- 7. cannot load such file — sasscエラーについて
- 8. accepts_nested_attributes_for を使ったフォームで意図しないユニークバリデーションの発生を回避する方法
- 9. 開発勉強(controller)
- 10. herokuでsecret_keyを使う
- 11. 【M1Mac】【Docker】環境構築で nokogiri のエラー対処方法
- 12. コンテナ用語についてまとめてみた
- 13. 【超簡単】Ruby on Rails に BootStrapを導入する方法
- 14. content_forメソッドでタイトルを動的に出力する
- 15. Rspecにおける画像検証の方法
- 16. Rspecを書くときに注意していること
- 17. rails5 progate 整理メモ
- 18. 【Rails7+スクレイピング+LINE】Qiitaの週間トレンド記事一覧に新しくランクインした記事達をLINEで通知したい
- 19. [Rails] [haml] link_toに文字とfontawesome両方を使って表示させる
- 20. action textで画像が表示されない
authenticate_user!メソッドの使い方
## どんなメソッドか?
ログイン状態によって表示するページを切り替えるメソッドです。
ログインしていないユーザーを、ログイン画面に遷移したい場合に使います。
before actionで呼び出すことにより、コントローラーのアクションを実行する前に、ユーザーがログインしていなければログイン画面に遷移することができます。“`ruby
before action authenticate user!
“`## onlyの後にアクションを指定した場合の例
“`ruby
before action authenticate user!, only: [:new, :edit]
“`
上記の場合、ログインしていないユーザーがnewアクションとeditアクションを実行した場合のみ、ログイン画面に遷移することができます。
only以外にもexpectの後にアクションを指定することで、ログインしていないユーザーが指定したアクション以外を実行した場合に、ログイン画面へ遷移させることもできます。
Docker を使ってRuby on Railsの開発環境を構築(M1チップのMac)
M1 Macbookを使ってポートフォリオを作ろうと思い、Virtual Boxで開発環境を作成しようとするとVirtual Boxが使えないことが発覚したので、Dockerを使って開発環境を構築しようとした。
しかし、色んなサイトの作成方法を真似しても上手くいかず、Dockerの公式ドキュメントを参考にしたところ、Yay! You’re on Rails!の画面を出すことができた。
手こずってしまった原因がDockerへの理解不足だったため基本的な概念を備忘録として記載しようと思う。
表現が不適切なところも多々あると思うので、ご指摘くだされば幸いです。まずはイメージ図を頭に入れる

引用
https://coinbaby8.com/docker-beginner.htmlイメージとい
【Rails 6】ActiveJob + S3 + Lambda + Slack で実現する非同期 CSV ダウンロード
## 概要
– 大容量の CSV を出力をしようとした際、レスポンスが返ってくるまでの待ち時間が苦痛
– 最悪、タイムアウトエラーになりかねない
– とりあえずレスポンスだけ先に返しておき、実際の CSV 出力処理はバックグラウンドで非同期処理するみたいな事がしたい
– ActiveJob + S3 + Lambda + Slack を使う事でそれが実現できそう軽めの CSV 出力であれば何ら問題無いのですが、サービスの運用が長続きしてたくさんのデータが蓄積すると、それらを一気に出力するのはなかなか骨が折れたりします。
実際、自分が担当しているサービスでも先日ついに処理に時間がかかりすぎてタイムアウトエラーになるといった事象が発生しました。
もちろん、 SQL の見直しだったり根本的な部分においては他にも色々やるべき事はあるかもしれませんが、とりあえず手っ取り早く対応するために非同期での CSV ダウンロードを実装してみました。
### 同期処理の場合
 {|repo_name| “https://github.com/#{repo_name}” }
– # gem “rails”
+ gem “rails”
“`“`
$ bundle install –path vendor/bundle
“`
# 2.Railsプロジェクトを作成する
今回はDBをMySQLにして作成。
“`
$ bundle exec rails new
railsチュートリアルをなるべく嚙み砕く 1章
今まで何回かチュートリアルに挑みましたが全て挫折しました。
挫折した原因は###### なんとなくの理解で進めてしまった。
これが原因でモチベーションの低下が始まり、挫折というルートを何回も辿っています
今回こそは全部やりきるために、自分なりに噛み砕いて理解し、
###### 人に説明できるようになったら進む
ことを意識してやりたいと思います他の方のための記事にもなったらいいな、、
##### 解釈が間違っているところがあれば教えていただきたいです!!# 第一章
環境構築ですね
私は ubuntu on Windowsを使ってrailsの環境構築をしましたhttps://qiita.com/ksh-fthr/items/64a4e86c8bad08322c94
こちらの記事が私が環境構築したやり方と同じです
1.3まで飛ばします
### 1.3
ここで
cd やmkdirが出てきます。
主要なUnixのコマンドたちですね
cd は change directory の頭文字をとったもので ディレクトリを移る
mkdir は make directory の略で
cannot load such file — sasscエラーについて
本日も頑張っていきましょう。宜しくお願いします。
こんなエラーが出ました。
どうやらこれはRails7以降で起きるエラーのようです。
従来通りにCSSを呼び出すとこのエラーが発生するようです。以下対応をすると解決できるようなので試してみます。
“`gemfile.qiita.rb
# gem “sassc-rails”
“`この、コメントアウト(#)を削除して、ターミナル上で
「bundle install」を実行してみます。無事、エラーが解消されました!
accepts_nested_attributes_for を使ったフォームで意図しないユニークバリデーションの発生を回避する方法
## 解決したい問題
Railsでは `accepts_nested_attributes_for` を使って、`has_many`関連する子レコードを1つのフォームで更新することができます。
イメージとしてはこんな感じです。
上の画面では以下のようなBookモデルと、それに関連するAuthorモデルを更新するフォームです。
(本と著者はmany-to-many関連だろう、というツッコミが来そうですが、説明のために単純化してるので気にしないでください)“`ruby
class Book < ApplicationRecord has_many :authors, dependent: :destroy accepts_nested_attributes_for :authors, reject_if: :all_bl
開発勉強(controller)
今回も頑張っていきましょう。
今日は、前回なんとかサーバーの立ち上げまでできたので、実際に開発に向けて勉強していきます。
⭐️ MVC
・Railsは「MVC」というアーキテクチャーを使ったフレームワーク
・MVCというのは、「Model」「View」「Controller」の略
・この3つの中で最も重要なのは「Controller」
⭐️ コントローラーを作成する
ターミナル上で前回作成したRailsAppへ移動し、以下コマンドを実行する
“`ruby:qiita.rb
rails g controller 名前
“`
※名前は半角英字とすること
“`ruby:qiita.rb
create app/controllers/hello_controller.rb
invoke erb
create app/views/hello
invoke test_unit
create test/controllers/hello_controller_test.rb
herokuでsecret_keyを使う
## はじめに
アプリをherokuにデプロイし、ログイン機能を使用しようとしたところ、このようなエラーが出ましたJWT::DecodeError (No verification key available)
この解決方法を共有いたします。
## 結論
herokuにマスターキーを登録するのを忘れてたので、追加しました。heroku config:set RAILS_MASTER_KEY=`cat config/master.key`
### 発生状況
ログイン認証でJWTを使って、デコードする際に、`Rails.application.credentials.secret_key_base`を使っています。
この値がnilとなっており、エラーが発生しておりました。def decode(token)
JWT.decode token, Rails.application.credentials.secret_key_base
endそもそもこれは、credentials.yml(公開鍵)の値をmaster.key(秘密
【M1Mac】【Docker】環境構築で nokogiri のエラー対処方法
## はじめに
未経験からエンジニアに転職しました。
まだまだわからないことだらけですが、毎日楽しく働いています!
業務や個人開発での発見やエラー解決などをアウトプットしています。
今回は、
M1 Macの環境構築で遭遇したエラーの解決方法です。
Docker Rails 環境を想定しています。# エラー内容
~~~
Caused by:
LoadError: Error loading shared library ld-linux-aarch64.so.1: No such file or directory (needed by /usr/local/bundle/gems/nokogiri-1.13.3-aarch64-linux/lib/nokogiri/2.6/nokogiri.so) – /usr/local/bundle/gems/nokogiri-1.13.3-aarch64-linux/lib/nokogiri/2.6/nokogiri.so
~~~~~~
rake aborted!
LoadError: cannot load such file —
コンテナ用語についてまとめてみた
# コンテナ用語
## コンテナ
– OSとカーネルは共有し、プロセスを分離する仕組み。
– コンテナ上で実行されたソフトウェアは単に1つのプロセスとして稼働しているにも関わらず、コンテナ内のソフトウェアから見ると独立したOS環境を占有しているように見える。### コンテナ vs サーバー仮想化
– サーバー仮想化は複数のOSを同一のハードウェア上で実行する仕組み。
– 「仮想マシン」上に「ゲストOS」を動作させる。
– 例: Virtual box[サーバー仮想化技術の基礎 – Qiita](https://qiita.com/NagaokaKenichi/items/123c54f3863816481bd7)
[各仮想化技術の違いをざっと理解するッ!! – Qiita](https://qiita.com/hiroki-it/items/0cea21a83394634d284a)
[[Cloud] 仮想化技術について](https://qiita.com/okkn/items/c0cb6feef4058e9d16b4)### コンテナのメリット
【超簡単】Ruby on Rails に BootStrapを導入する方法
# はじめに
筆者は [大学生限定 プログラミングコミュニティ 『GeekSalon』](https://geek-salon.com/?utm_source=Direct&utm_medium=attract&utm_campaign=2Q&utm_content=Fukuoka_E_2Q)で活動している者です!# Bootstrapとは
世界で一番人気のあるフロントエンドライブラリです。
モバイルファーストなレスポンシブウェブを素早くデザイン・カスタマイズすることが可能です。
豊富なコンポーネント、強力なJavaScriptプラグインを備えています。
詳しくは、[Bootstrap公式サイト](https://getbootstrap.jp/) を!!
## Ruby on Rails への導入方法
①まずは[Bootstrap公式サイト](https://getbootstrap.jp/)へアクセス!
②サイト内のはじめるボタンをクリック!
File.new(“#{Rails.root}/画像のパス)でデータを登録する
“`ruby
let!(:user) { create(:user, name: ‘user_1’, image: File.new(“#{Rails.root}/spec/factories/image_1.jpg”)) }
“`## フォームに画像を入力する
“attach_file”を使い画像登録の状況を再現する。name属性、ファイルのパス(上の例と同じディレクトリにあるファイルを指定している)を指定することで画像の投稿を再現することができる
“`ruby
attach_file ‘フォームのname属性’, “#{Rails.root}/spec/factories
Rspecを書くときに注意していること
Rspecを書くときの自分なりの決まり事、というかこうした方が読みやすくなるんではなかろうかということをメモがわりに書いてく。これからもちょいちょい足していく & これ違うなと思う部分は修正していく。
## 戻り値を明確にする
“`ruby
let!(:hoge) do
huga = create(:hoge, name: ‘name’, user: user)
hoge.update(updated_at: Date.new(2018, 7, 1))
hoge # 戻り値
end
“`最後のhogeがなく、hoge.updateで終わってしまうと戻り値が何なのかが判断しづらいので「hoge」を最後に記述し戻り値を明確にする
## 凡庸的なクラス属性を指定するときは「within(’.someClass’) do」を使い対象を絞る
“`ruby
page.all(‘.btn’)[1].click
# 対象が広すぎるのでページに新いbtnクラスが追加されたときにテストが通らなくなる恐れがあるwithin(page.all(‘.shops’)[1]) {
rails5 progate 整理メモ
# ログイン失敗時のメッセージを表示させる
送信されたパラメータにあうユーザーがない場合にメッセージを表示させる。
その時にお題のメッセージを表示させる
## どうやってエラーメッセージを表示させるのか忘れた。
ちょっと答えを見た。
“`users_controller.rb
def login
.
.
.
else
@error_messeage = “メールアドレスまたはパスワードが間違っています”
render(“login”)
end
end
“`
loginページに行く前にインスタンス変数に代入しておく。そうすることで中身を入れることができる。
“`rb
<% if @error_messeage %>
“`
@error_messeageに中身があれば表示されるようにする。“`login.html
<% if @error_messeage%>関連する記事
OTHERカテゴリの最新記事
- 2023.09.23
iOS関連のことを調べてみた2023年09月23日
- 2023.09.23
Python関連のことを調べてみた2023年09月23日
- 2023.09.23
Ruby関連のことを調べてみた2023年09月23日
- 2023.09.23
Rails関連のことを調べてみた2023年09月23日
- 2023.09.23
Python3関連のことを調べてみた2023年09月23日
- 2023.09.23
PHP関連のことを調べてみた2023年09月23日