- 1. コマンドの中でRubyを実行する
- 2. Railsプロジェクトのライセンスを調査した
- 3. Deviseを利用した会員機能の実装手順
- 4. Railsバージョンアップで `URI.encode` と `URI.escape` が使えなくなった問題とその解決策
- 5. Railsのバージョンアップで `add_template_helper(ApplicationHelper)` エラー発生! `helper ApplicationHelper` に変更する理由と対処法
- 6. 【Rails】ルーティングの”collection”と”member”の違い
- 7. Raspberry Pi で Gem sqlite3 をインストールしようとするとエラーになる
- 8. 【個人開発】Railsで経営・起業につかえるフレームワーク分析アプリを作成!
- 9. [備忘録][Ruby]each_sliceメソッドによる分割件数について
- 10. 質問アプリの作成 #1
- 11. オリジナルアプリ制作過程 〜wants〜
- 12. 【Ruby】比較演算子について
- 13. 【学習メモ】Ruby / Ruby on Rails
- 14. rbs-inline の自動ビルドを fswatch を使わずに行う
- 15. 【Rails】ArgumentError: The scope body needs to be callable.
- 16. 【Ruby on Rails】なぜ非同期通信(deliver_later)で、メールの送信状況が不安定になる現象が発生するのか?
- 17. Rails 7.2に標準搭載されたGitHub Actions CIワークフローを見て学ぶ
- 18. Dev Containerを使ったら超効率よく開発環境ができた話【Ruby on Rails】
- 19. 【Rails初心者必見】よくあるエラーとその解決方法:プロが教える10のトラブルシューティング
- 20. Railsの「インスタンス変数」をプログラミングスクール講師が丁寧に解説
コマンドの中でRubyを実行する
## 環境
Ruby2.6## 内容
Rubyでちょっとした処理を実行したい場合、テキストファイルにRubyのコードを記述して、コマンドから呼び出して実行することになります。
因みに次のコードは1から20までに出てくる素数を出力するコードです。
“`hoge.rb
def hoge
require ‘prime’
puts Integer.each_prime(20).to_a
end
hoge
“`
コマンドからファイルを呼び出して実行します。“`
$ruby ./hoge.rb
“`Rubyのコードを別ファイルに作成するのではなく、Rubyコマンドの中にコードを直接埋め込んで実行することができます。
やり方その1
“`
$ruby -e ‘require “prime”; puts Integer.each_prime(20).to_a’
“`やり方その2
“`
$ruby -rprime -e ‘puts Integer.each_prime(20).to_a’
“`
Railsプロジェクトのライセンスを調査した
「Railsプロジェクトで使用しているOSSライセンスを出力したい」という要件があったので、OSSライセンスを [pivotal/LicenseFinder](https://github.com/pivotal/LicenseFinder) を使用して調べてみました。
https://qiita.com/mtsuge/items/9e08ff2570effcf6d47c
この記事を参考にしましたが、時間が経ってオプションが変わっていました。
## `pivotal/LicenseFinder` を使う
### インストール
無駄な依存関係が増えてしまうため、あまり好ましくないけど `Gemfile` に以下を追加して `bundle install` を実行します。
“`ruby
gem ‘license_finder’, :group => :development
“``Gemfile` より直接インストールするこちらのほうが良いみたいです。
“`bash
$ gem install license_finder
“`とりあえずライセンスの情報を出力
Deviseを利用した会員機能の実装手順
初めまして、これから自分が学習した内容をまとめていこうと思い、投稿を始めました。
まず最初は、Deviseを利用した会員機能の実装です。# 1.deviseをインストールする
Gemfileに`devise`を追加し、インストールします。
“`:Gemfile
gem ‘devise’
“`
次に以下のコマンドで `bundle install`を実行します。
“`ruby:bash
bundle install
“`
# 2.deviseのセットアップ
`devise`をrailsアプリにセットアップします。
“`:bash
rails g devise:install
“`
*g はgenerateのg です。
このコマンドは、deviseの設定ファイルを作成し、初期設定を行います。
# 3.Flashメッセージの設定
`devise`では、フラッシュメッセージがログインやサインアップの成功/失敗時に表示されます。以下をの記述をapplication.html.erbに追加します。
“`erb:app/views/layout/application.html.e
Railsバージョンアップで `URI.encode` と `URI.escape` が使えなくなった問題とその解決策
Railsアプリをバージョンアップした際に、`URI.encode` や `URI.escape` が非推奨・廃止されるため、エンコードの方法を変更する必要が出てきます。この問題とその解決策について、コード例を交えて解説します。
—
## 問題の発生
Railsをバージョンアップした後、次のようなコードで問題が発生することがあります。
“`ruby
address = “#{params[:address_line1]}#{params[:city]}#{params[:address_line2]}”
target_uri = URI.escape(“https://api.example.com/location?address=#{address}&key=#{API_KEY}”)
“`このコードは `URI.escape` の廃止によりエラーが発生します。
—
## 解決策: `URI.encode_www_form_component` を使用
すべてのURLをエンコードするのではなく、パラメータ部分のみをエンコードします。
### 変更
Railsのバージョンアップで `add_template_helper(ApplicationHelper)` エラー発生! `helper ApplicationHelper` に変更する理由と対処法
Railsアプリをバージョンアップした際に、`add_template_helper(ApplicationHelper)` を使用しているとエラーが発生することがあります。このエラーを解消するために、 `helper ApplicationHelper` へ変更する方法について解説します。
—
## エラーの概要
Railsのバージョンをアップデートした後、コントローラやビューでヘルパーを使おうとしたときに、以下のようなエラーが発生する場合があります。
“`
NoMethodError: undefined method `add_template_helper’ for ApplicationController:Class
“`このエラーは、Railsのバージョン変更に伴い、`add_template_helper` の使用方法が非推奨、または変更されたことが原因です。特に、`ApplicationHelper` をコントローラで使いたいときにこのエラーが見られます。
—
## 解決策: `helper ApplicationHelper` を使う
【Rails】ルーティングの”collection”と”member”の違い
こんにちは!
初Railsの記事です:thumbsup_tone1:今回は、ルーティングの member と collection の違いについて書きます!
![banner.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3524120/83de7afc-66c8-8880-ad67-fd6231afad24.png)
# 違い
* member を使った場合は id が付与される
* collection を使った場合は id が付与されない# 前提
例として UsersController があり、hoge というメソッドを実行します。# member
“`
resources :users do
member do
get ‘hoge’
end
end
“`
上記のように member を使用すると以下のルーティングが設定されます。
“`
/users/:id/hoge
“`# collection
“`
resources :users do
Raspberry Pi で Gem sqlite3 をインストールしようとするとエラーになる
## 問題
Raspberry Pi で [sqlite3](https://github.com/sparklemotion/sqlite3-ruby) を bundle install し、いざ使用しようとすると以下のエラーが発生する。
“`
cannot load such file — sqlite3/sqlite3_native (LoadError)
“`## 解決方法
コンパイル済みのものをインストールするのではなく、自分でコンパイルするようにする。
“`shell-session
$ bundle config set force_ruby_platform true
“`## バージョン情報
“`shell-session
$ cat /proc/cpuinfo | sed -n -e ‘s/Model\s*:\s*\(\w\+\)/\1/p’
Raspberry Pi 3 Model B Rev 1.2$ cat /etc/debian_version
10.13$ ruby -v
ruby 3.3.4 (2024-07-09
【個人開発】Railsで経営・起業につかえるフレームワーク分析アプリを作成!
この度、実は前から考えていた、フレームワークアプリを作りました!
以前、↓Nolaというサービスを見かけたときに、小説→経営や起業に置き換えたエディターツールって便利なのでは?と思ったのがきっかけです。https://nola-novel.com/
## アプリ紹介
そこで今回、経営・起業フレームワーク分析ができるアプリ、Compassbookを作成しました。
PEST分析、3C分析、STP分析、4P分析、ビジネスモデルキャンバスの記入が可能です。サイトはこちら
URL:https://compassbook.onrender.com/閲覧用アカウント
ID:test@test.co.jp
Pass:111111※自由に書き込みや登録いただいて大丈夫です。その際はご自身でアカウントを作成ください。
※ポートフォリオの役割があるため、場合によっては投稿を削除する可能性がございます。予めご了承ください。Githubはこちら
https://github.com/yusukesugahara/compassbook## サービス概要
経営や起業のためのフレームワー
[備忘録][Ruby]each_sliceメソッドによる分割件数について
:::note
`each_slice`メソッドを使用して大量のデータを扱う時の、分割件数について学びがあったのでメモ
:::|| メリット | デメリット |
|:———–|:————|:————|
| 分割件数を増やす | 1度に処理するデータ量が減るので、DB負荷が軽減|処理時間が遅くなる|
| 分割件数を減らす |クエリの回数が減り、効率的にデータを取得し処理時間の短縮が期待できる|あまりに件数が多いと、メモリ負荷が高まる|https://docs.ruby-lang.org/ja/latest/method/Enumerable/i/each_slice.html
質問アプリの作成 #1
# 質問アプリの作成!
デザインは考慮しないものとする。## できること
・質問の投稿
・質問の編集
・質問の更新
・質問の削除## 開発環境
・クラウドサービス(codespaces)
・Rudy 3.0.2
・rails7アプリ新規作成
“`
rails new qanda_7.0.0
“`作成したフォルダに移動
“`
cd qanda_7.0.0
“`
questionsコントローラーの作成
“`
rails g controller questions
“`先にアクションの定義を記述
“`
class QuestionsController < ApplicationController #質問一覧表示 def index end #質問詳細ページ表示 def show end #質問の作成 def new end #質問の登録 def create end #質問の編集 def edit end #質問の
オリジナルアプリ制作過程 〜wants〜
### 本日の進捗報告: Wantsアプリのリクエスト機能実装
#### 1. ルーティングの設定
まず、`config/routes.rb` を更新しました。リクエストに関連するルートを設定し、`requests#index` をアプリのルートパスに設定しました。
“`ruby
Rails.application.routes.draw do
resources :requests, only: [:index, :new, :create]
devise_for :users
root to: “requests#index”
end
“`#### 2. リクエストコントローラーの実装
次に、リクエスト一覧と新規リクエスト投稿機能を `app/controllers/requests_controller.rb` で実装しました。リクエストの一覧表示、リクエスト作成フォームの表示、リクエストの作成処理を定義しました。
“`ruby
class RequestsController < ApplicationController def inde
【Ruby】比較演算子について
## 比較演算子一覧
| 演算子 | 例 | 意味 |
|——–|————|——————–|
| `==` | `a == b` | aとbが等しい |
| `!=` | `a != b` | aとbが等しくない |
| `>` | `a > b` | aはbより大きい |
| `>=` | `a >= b` | aはb以上 |
| `<` | `a < b` | aはbより小さい | | `<=` | `a <= b` | aはb以下 | | `<=>` | `a <=> b` | aとbの比較結果を返す |## 各演算子の詳細
### `==` (等しい)
`==` 演算子は、2つの値が等しいかどうかを比較します。等しい場合は `true` を返し、そうでない場合は `false` を返します。
“`ruby
a = 5
b = 5
puts a
【学習メモ】Ruby / Ruby on Rails
# Ruby
Rubyについて学んだ知識をまとめます
### 変数展開
文字列の中で、#{変数名}とすることで、変数を代入している値に置き換えて、文字列に含めることができる
変数展開を用いる際は、ダブルクォーテーションで囲む必要がある
### elsifの注意点
elsifは必要な数だけ並べることができますが、複数の条件に合致したとしても、実行されるのは最初に合致した条件の処理のみである。
そのため条件の順番を間違えると、期待した分岐がなされないことがある
### each文 書き方
配列.each do |変数名|
処理
end
変数名は好きな名前をつけられるが、配列の変数名の単数形にすることが多い
### シンボルとは
シンボルとは、文字を「”」や「’」で囲む代わりに、先頭に「:」をつけた書き方のことをいいます
文字列とシンボルは厳密には異なりますが、基本的には同じように使用することができる
### 真偽値を返すメソッドについて
if文で使うような条件式をreturnすると、その条件式の結果として得られる真偽値(trueまたはfalse)を返すことができる
真偽値を返すメソッド
rbs-inline の自動ビルドを fswatch を使わずに行う
[rbs-inline](https://github.com/soutaro/rbs-inline) をチーム内に導入するにあたって、 watch してビルドするための仕組みを整えた。
rbs-inline の README には `fswatch -0 lib | xargs -0 -n1 bundle exec rbs-inline –output` が紹介されている。
ただ、この方法だと [fswatch](https://emcrisostomo.github.io/fswatch/) を各々インストールする必要がある。 (チーム開発では、セットアップを複雑にしたくない、等で外部ツールに依存したくないことがある)代わりに [listen](https://github.com/guard/listen) gem を使って Ruby 内で完結するようにした。実際の watch するコードは ↓ の感じ。
“`ruby:Rakefile
namespace :rbs do
TARGET_DIRS = %w(app lib).freezedesc ‘Buil
【Rails】ArgumentError: The scope body needs to be callable.
## はじめに
Railsのアップデート中にscopeを使用している箇所でエラーが出たので、その対応をまとめます。## 問題
コード
“`ruby
scope :valid, where(:is_valid => true)
“`エラー文
“`ruby
ArgumentError: The scope body needs to be callable.
“`## 解決方法
以下のように修正します。
“`ruby
scope :valid, -> { where(:is_valid => true) }
“`## 参考
https://stackoverflow.com/questions/28951671/argument-error-the-scope-body-needs-to-be-callable
【Ruby on Rails】なぜ非同期通信(deliver_later)で、メールの送信状況が不安定になる現象が発生するのか?
# メモ
### はじめに
Ruby on Railsを用いたアプリケーション開発をしていく中で、「**非同期通信でメール送信を行う場合、たまに送信されない現象が発生する**」という怪奇現象にぶち当たり、原因が判明したので本記事にて共有します。
# 同期通信と非同期通信のメール処理の違い
まず、メール送信処理に関わる同期通信と非同期通信の違いについて、表を用いて解説します。
||同期通信|非同期通信|
|:-:|:–|:–|
|内容|逐次処理でメールを通信する|並行処理でメールを通信する|
|メソッド|`deliver_now`|`deliver_later`|
|処理時間|大きい|小さい|
|特徴(メール受信)|確実にメールが届く|ジョブが中断されるとメールが届かない|
|特徴(トランザクション)|同じトランザクションで処理する|非同期通信用のトランザクションを立てて処理する|
|用途|1つ1つ確実に送る場合|メールを大量に送る場合|同期通信と非同期通信の大きな違いは、処理手順が**逐次処理(順番に行う処理)なのか、もしくは並行処理なのか**ということです。逐次処理の
Rails 7.2に標準搭載されたGitHub Actions CIワークフローを見て学ぶ
Rails7.2から、GitHub Actionsを使ったCIワークフローが標準で用意されるようになりました。
これにより、Railsアプリケーションの開発において、テストやセキュリティチェック、スタイルチェックが自動化され、開発体験が向上します。
このワークフローを見ていく中で、いくつかの学びがあったので、備忘録としてまとめてみました。
「CIで何しているかよくわからない」という方でも、この記事を通して「CIでこういうことをしているんだ」という理解を深めてもらえたら嬉しいです。# 各ジョブを見ていく
## 1. scan_ruby(セキュリティチェックの自動化)
“` ci.yml
name: CIon:
pull_request:
push:
branches: [ main ]jobs:
scan_ruby:
runs-on: ubuntu-lateststeps:
– name: Checkout code
uses: actions/checkout@v4– name:
Dev Containerを使ったら超効率よく開発環境ができた話【Ruby on Rails】
# はじめに
Rails 7.2 では、`–devcontainer` オプションを使ってプロジェクトを作成することで、Dev Containerを簡単に設定できるようになりました。
実際に自分でセットアップしてみたところ、想像以上に簡単に十分な環境を作成できたので、その手順を紹介します。# 構築手順
[Dev Containerでの開発ガイド](https://railsguides.jp/getting_started_with_devcontainer.html)を参考に進めました。
DockerやVSCodeなどは普段から使っているので、これらのインストール手順は省略します。## VS Codeに拡張機能をインストール
VSCodeの拡張機能検索で「Dev Containers」と検索し、拡張機能をインストールします。
![スクリーンショット 2024-09-30 9.59.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268830/1d5cd783-b82d-11ec-5d
【Rails初心者必見】よくあるエラーとその解決方法:プロが教える10のトラブルシューティング
こんにちは!現役のフルスタックWebエンジニアで、プログラミングスクールの講師も務めている「とまだ」です。
Railsを学び始めた方なら、きっと「エラーが出てどうしていいかわからない…」という経験をしたことがあるのではないでしょうか?
この記事では、Railsで頻繁に遭遇するエラーとその解決方法を、実践的なコード例を交えて詳しく解説していきます。
## 1. はじめに:Railsエラーとの付き合い方
Railsでアプリケーションを開発していると、様々なエラーに遭遇します。初めてそのエラーを見たときは「何が起きているんだ?」と焦ってしまうかもしれません。
しかし、落ち着いて以下のステップを踏むことで、多くのエラーは解決できます。
1. エラーメッセージをよく読む
2. エラーが発生している箇所を特定する
3. エラーの原因を推測する
4. 解決策を考え、実行する
5. 解決しない場合は、エラーメッセージをGoogle検索するエラーは決して敵ではありません。むしろ、アプリケーションが正しく動作するためのヒントを与えてくれる「味方」だと考えましょう。
それでは、具
Railsの「インスタンス変数」をプログラミングスクール講師が丁寧に解説
今回は、Railsにおける「インスタンス変数」について詳しく解説していきます。
「インスタンス変数って何?」「どうやって使うの?」と疑問に思っている方も多いのではないでしょうか。
インスタンス変数は、Railsアプリケーションを作る上で非常に重要な概念です。
それでは、早速見ていきましょう!
## 1. Railsにおけるインスタンス変数の基本
### 1.1 インスタンス変数とは何か
まずは、インスタンス変数の基本から押さえていきましょう。
インスタンス変数は、オブジェクト(インスタンス)に属する変数のことです。
Rubyでは、変数名の先頭に「@」をつけることで、インスタンス変数として定義できます。
例えば、こんな感じです。
“`ruby
class User
def initialize(name)
@name = name # これがインスタンス変数
end
end
“`このコードでは、`@name`がインスタンス変数です。
Userクラスのインスタンスが作られるたびに、それぞれのインスタンスが独自の`@name`変数を持つことに