Rails関連のことを調べてみた

Rails関連のことを調べてみた
目次

Railsガイド +αメモず【DSL】

# はじめに
[Railsガイド](https://railsguides.jp/active_record_migrations.html)でわからなかった語句シリーズです。
「マイグレーションではRubyのDSLが使われているので・・・」
DSL?何?
# DSLとは

> DSL(Domain-Specific Language)は、特定のアプリケーションドメインに特化したプログラミング言語です。これらの言語は、一般的なプログラミング言語とは異なり、特定の種類の問題やタスクを扱うために設計されています。DSLの目的は、特定のドメインにおいて、より効率的かつ直感的にプログラミングすることを可能にすることです。
>
> DSLには大きく分けて2種類あります:
>
> 1. **内部DSL(Internal DSLs)**:これは既存のプログラミング言語に基づいて構築され、その言語の構文と機能を活用します。例えば、RubyやPythonで書かれたDSLがこれに該当します。
>
> 2. **外部DSL(External DSLs)**:これらは独自の構文を持ち、特定の

元記事を表示

【Rails】アプリケーションを作成したときに抜けがちな作業(初心者編)

こんにちは。
今回は初心者が忘れがちでも、当たり前すぎて記事にあまり載っていない作業を載せていきます!

## プラグイン導入
“`terminal:
$ yarn add @babel/plugin-proposal-private-methods @babel/plugin-proposal-private-property-in-object
“`
これをしないとRailsアプリケーションが動作しません。アプリケーション作成後忘れないうちに!
(私は忘れてしまってdelete機能をきちんとメソッド指定しているのにPOSTで処理されてしまっていることがありました。)

## ホストの許可
“`ruby: config/environment/development.rb
config.hosts.clear
end
“`
スクロールして一番下に元々あったconfig.hostsの記述がありますが、それを消して書き換えましょう。
これを忘れてしまうとBlock host:∼以下略というエラーが発生します。

## $ rails db:migrate
“`termin

元記事を表示

初めての投稿

# 自己紹介
初めまして。DMMWEBCAMP2024年1月生(2024年2月時点で在学中)23歳女です。
もともと医療関係のお仕事をしていましたが、現在は退職し未経験でのエンジニア転職に向けて日々勉強中です!
プログラミング**完全未経験の超初心者**ですが、学ぶにつれて自分の学んだことをアウトプットする場が欲しいと思い、Qiitaで成長ブログのようなものをこれから書いていこうと思います。
ちなみに言語のアウトプットの練習にもなるため、面接にも役立ちそうというのも狙いです。

初回記事の内容は、**超初心者が何でこのコードを書いているか忘れがちなポイント第一弾**です!
(第何弾やれば終わるか分からない笑)
ではさっそく書いていきます。

## before_action :authenticate_user!, except: [:アクション名]
 `authenticate_user!`が初心者には見慣れないですね。
これはコントローラの記述を書く際に、2行目以降必要となってくる記述です。
意味としては、『アクションを始める前に**ログインしていないユーザー**は、ログイン

元記事を表示

Rails知っておきたい用語【初級】

Railsの基礎学習の中で覚えておきたいまたはよくわからなかった用語を調べてまとめてみました。これから学習が進み次第追記していこうと思います。

# Webサーバソフトウェア

Webサーバソフトウェアは、ブラウザとアプリケーションサーバの間に立ち、ブラウザからのリクエストをアプリケーションサーバにリクエストし、アプリケーションサーバからのレスポンス(HTML、CSS、JavaScriptなど)をブラウザへ返す役割を持つ。静的ファイルの場合は、そのままブラウザへレスポンスを返す。

## アプリケーションサーバソフトウェア

アプリケーションサーバソフトウェアは、ブラウザやWebサーバと通信し、動的なコンテンツを生成して送信する。また、リクエストによって、データベースサーバーにアクセスしデータの抽出や加工処理を行う。ローカル環境の場合、Webサーバを持たずアプリケーションサーバとブラウザが直接やりとりすることもある。

## データベースサーバソフトウェア

データベースサーバソフトウェアはデータの記録、読み書きを行う。MySQLやPostgreSQLなどのソフトウェアを使用してデ

元記事を表示

【Rails】namespaceで管理者と利用者ごとにcontrollerとviewをわけて処理を変える。

## はじめに
タイトルの通り、namespaceを使って管理者(admin)と利用者(user)でコントローラーとビューをわけたいと思います。
利用者に公開する画面と管理者に公開する画面は別々で、管理者だけがアクセスできる処理を作成するなどよくあることだと思います。
なのでこのような記事は調べれば沢山でてきますが、勉強のためアウトプットを兼ねて投稿したいと思います。
説明を省略する箇所が多いかもしれませんので、深く理解したいかたは他の記事をみることをおすすめします。

## namespaceとは
namespaceは名前空間とも呼ばれており、簡単に言うとコントローラーやモデル、ビュー、ルーティングなどをグループ化するために使用される仕組み。

## namespaceの使い方
商品一覧を表示するurl`/items`があるとします。
### ルーティング
~~~ruby
Rails.application.routes.draw do
resources :items
end
~~~
通常だとこのようなルーティングを設定することが多いと思いますが、この状態だと管理者(admin

元記事を表示

[Rails] pgをインストールできずrails newでアプリを新規作成できない

## 環境

– MacBookAir 13インチ M1(2020)
OS:Sonoma 14.3
メモリ:8GB
– Rails: version 6.1.7.6

## やりたいこと

rails newコマンドで新しくアプリケーションを作成する。

“`bash
$ rails _6.1.7.6_ new sample -d postgresql
“`

## エラー内容

上記のコードを実行すると下記のようにエラーが発生。

“`bash:エラー内容
An error occurred while installing pg (1.5.4), and Bundler cannot
continue.
Make sure that `gem install pg -v ‘1.5.4’ –source ‘https://rubygems.org/’`
succeeds before bundling.

In Gemfile:
pg
run bundle binstubs bundler
Could not find gem ‘pg (~> 1.1)

元記事を表示

【Rails】標準ライブラリ「objspace」って何者?

どうもこんにちは。

今回はアプリケーションのソースコード理解を進めている中で知らないライブラリがあったので調べてみました。

# 標準ライブラリって何?

標準ライブラリとは、Gemfileを通じてインストールする必要がないRubyにすでにインストールされているライブラリのことを指します。

わかりやすいものでは、`CSV`ライブラリがRubyの標準ライブラリとして使用されます。これは、使用したいコントローラーやモデルのファイルの中で`require`するだけです。

“`ruby
# これを記述すると
require ‘csv’

class Sample
def format_export
respond_to do |format|
format.csv do
bom = “\uFEFF”
# CSVクラスを使用してコードを書くことができます。
csv_data = CSV.generate(bom) do |csv|

元記事を表示

railsで作成したアプリに投稿日時を表示させる方法

# 投稿日時を表示させるには

以下の記述をすることで投稿日時を表示できる。
“`ruby:〇〇.html.erb
<%= テーブル名.created_at %>
“`

ただし、この記述だと日本時間で表示されない(おそらくアメリカの時間が表示されている) ため為日本時間への変更が必要になる。

# 日本時間を表示させる

## 手順1
日本時間を表示させるには aplication.rb を以下のように編集する。
“`ruby:aplication.rb
module TaskMemo
class Application < Rails::Application # Initialize configuration defaults for originally generated Rails version. config.load_defaults 7.0 config.i18n.default_locale = :ja config.time_zone = 'Tokyo' # 省略 end end ``` ```

元記事を表示

dockerとdocker-composeを使って既存プロジェクトをdocker化した

## はじめに
dockerとdocker-composeを使って既存のRails+PostgreSQLのプロジェクトをdocker化したので、備忘録として手順をまとめます。

## 作業環境
– M1Mac メモリ8GB

## Dockerfileを用意する
Dockerコンテナを起動するためにはDockerImageの作成が必要になります。
DockerImageを作るために、Dockerfileを用意します。

:::note info
ちなみに。
Dockerコンテナ:オブジェクト指向的に言えばインスタンス
DockerImage:Dockerコンテナの元となるもの(オブジェクト指向的に言えばクラス)
Dockerfile:DockerImageの設計書のようなもの
:::

Rails用の Dockerfileを下記の通り用意しました。

“`dockerfile:Dockerfile
FROM ruby:3.2.2
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add –
RUN ec

元記事を表示

Ruby on Rails 環境構築 MacOS

MacOSでのRuby on Railsの環境構築(installまわりのみ)を記録用に残しておきたいと思います。
ChatGPTに聞けば一発でわかることかもしれませんが、誰かの経験を参考にしたいという方の手助けになれば幸いです。

至らない部分もある方と思いますが、その時はそっと教えていただけると励みになります!

Rubyのインストール

* まずはbrew入ってるのかなあと、確認
“`
brew -v
“`
>version表示されたらOK

* rbenvのインストール

“`
brew install rbenv ruby-build
“`
* インストールされたか確認

“`
rbenv -v
“`
>version表示されたらOK

+ rubyのインストール
“`
rbenv install 3.2.0 //任意のversion
“`
+ インストールされたか確認
“`
ruby -v
“`
>version表示されたらOK

2, bundlerのインストール

bundlerはRubyライブラリーの依存関係やversionを一元

元記事を表示

Rails+M1 Mac+Docker環境にSystem Specを導入する

[Rails アプリに E2E テストを導入する(技術選定編)](https://qiita.com/bython/items/4d79ade2e8da5378e8b6)で E2E テストをする上での選択肢や各スタックについて理解しましたが、
今回は実際に E2E テストを実行する環境を構築して、簡単なテストの実行まで行いたいと思います。

## 環境

– OS: Ventura 13.5(22G74)
– CPU: Apple M1
– Ruby: 3.2.2
– Rails: 7.0.8
– Docker Desktop: 4.21.1

## Gem のインストール

Gemfile に必要な gem を追加します。webrdrivers が存在すると、Webdrivers::BrowserNotFound のエラーが発生するため削除します。

“`ruby:Gemfile
group :test do
gem ‘capybara’, ‘>= 2.15’
gem ‘selenium-webdriver’
# gem ‘webdrivers’ ← これは削除する
e

元記事を表示

StimulusのRouter class、Dispatcher classのプロパティ

# はじめに

以下の記事で、Stimulus アプリケーションの起動時にしていることをまとめました。

https://qiita.com/yasu-sg/items/38f7b3529d0096d68d14

起動時に、`Router` class、`Dispatcher` classのインスタンスを作成して、それぞれのインスタンスで`start`メソッドを実行していることがわかりました。
しかし、それぞれのインスタンスの役割が何であって、なんのために`start`メソッドを実行しているのいまいちわかりませんでした。
調べた限り、それぞれの役割について書かれている記事は見当たりませんでした。
全てのコードを一気に読んで役割を推察するのは難しいです。
なので、少しずつコードを読み解いて、役割を理解していくことにします。
本記事では、それぞれのclassのプロパティを読み解きます。

# `Router` classのプロパティ

以下は、`Router` classのプロパティです。

“`ts
readonly application: Application
private m

元記事を表示

Railsの特殊なところ

# はじめに


Railsを学んでい

元記事を表示

【個人開発】北海道の魅力を発見し、北海道旅行のお悩みを解決するアプリを作りました🐄

# はじめに
はじめまして、はる([@lemonade_37](https://twitter.com/lemonade_37))と申します。
完全異業種からエンジニアに転職するためオンラインスクールに入り学習をしていました。

オンラインスクールでは北海道から受講している方がほとんどおらず、
道外の方と交流する中で、

道外の方は意外と北海道について知らないことが多いのかも🤔
道民が近くにいなくても、代わりに相談に乗ってくれるようなアプリを作りたい💭
もっと北海道を身近に感じてもらいたい🦌
と思ったことがきっかけで、このアプリを作成しました。
  
**「えぞとらべる」**

https://ezo-travel.com/

https://github.com/satou-haruka-37/hokkaido_travel

# 使い方
### 1.北海道内のおすすめのスポットを探す機能
道外の方からの **「広すぎてどこに何があるかわからない」** というお悩みに対して、
投稿を地図上にマーカーで表示することで、どこにあるスポットなのか分かりやすくしました。
田舎のスポットも、有

元記事を表示

【Ruby on Rails】rubocopの警告「Rails/InverseOf」から学ぶinverse_ofオプション

私は現在、未経験からのエンジニア転職に向けてプログラミングスクールで学習をしている、いしかわと申します。

個人開発中に`rubocop`から`Rails/InverseOf`と警告されたことをきっかけに`Active Record`の`inverse_ofオプション`を用いた`双方向関連付け`について学習した内容をアウトプットとしてこちらの記事にしました。
どなたかの参考になれば幸いです。

:::note warn
プログラミング初学者なので、内容に誤り等ある可能性があります
誤りがありましたら教えてくださると幸いです
:::

環境
ruby 3.2.2
Ruby on Rails 7.0.8

# 双方向関連付けとは
皆さんが良く知る以下のアソシエーション関連付けは`双方向関連付け`と呼ぶことができます
※まずこれすら知らずにアソシエーションだなんだかんだと言っていた私に石を投げてください
“`ruby
class User < ApplicationRecord has_many :books end class Book < ApplicationRecord

元記事を表示

オーバライドとモンキーパッチでどう違うねんと思ったので調べた

オーバーライド(Override)とモンキーパッチ(Monkey Patch)は、どちらも既存のコードの挙動を変更する方法ですか、
使用される文脈と目的において全く違う振る舞いをするよと教えてもらったのでまとめてみました。

### オーバーライド

オーバーライドは、主に継承で使用され、
サブクラスがスーパークラスで定義されたメソッドを再定義することを指します。

#### 具体例
“`ruby
class Animal
def speak
“Some sound”
end
end

class Dog < Animal def speak "Bark" end end dog = Dog.new puts dog.speak # 出力: "Bark" ``` この例では、`Dog`クラスが`Animal`クラスの`speak`メソッドをオーバーライドしています。 ### モンキーパッチ モンキーパッチは、既存のクラスやモジュールに新しいメソッドを追加したり、既存のメソッドを変更したりするために使われます。モンキーパッチは、継承とは関係なく

元記事を表示

Ruby on RailsのDEPRECATION WARNINGの出力先を設定するactive_support.deprecation

Railsをバージョンアップするときに、`DEPRECATION WARNING`が出ることがあります。
この警告は「今回のバージョンアップでは影響がないが将来的に無効になる機能」を教えてくれます。

## `DEPRECATION WARNING` の例

例えば Rails 7.1 にバージョンを上げたときに、次の警告が表示されることがあります。

“`sh
DEPRECATION WARNING: Passing the coder as positional argument is deprecated and will be removed in Rails 7.2.

Please pass the coder as a keyword argument:

serialize :namespaces, coder: Psych
(called from at /home/runner/work/pubannotation/pubannotation/app/models/project.rb:6)
“`

現在は次のように、Ac

元記事を表示

rails7×docker環境下でrails dbconsoleが立ち上がらない時の解決方法

# 概要
タイトル通りではあるが、軽くアプリを作っていたときに`rails dbconsole`が立ち上がらなくなった

# エラー内容

コンテナ内で実行
“`bash
# rails dbconsole
DEPRECATION WARNING: The config.web_console.whitelisted_ips is deprecated and will be ignored in future release of web_console. Please use config.web_console.allowed_ips instead. (called from

at /bauikis2/config/environment.rb:5)
Couldn’t find database client: mysql, mysql5. Check your $PATH and try again.
“`

1. `Couldn’t find database client: mysql, mysql5. Check your $PATH and try

元記事を表示

Rails・クラウド初学者が初めてGoogle App Engine(GAE)スタンダード環境にRails7+MySQLアプリをデプロイするまでの顛末

初投稿です。Rails で本格的なWebアプリを作れるようになろうと独学中です。

アイデアが一定程度Railsアプリ(Rails7+MySQL)の形になってきたのでいざ動かさん、と
構築が簡単なようで費用負担も許容範囲に収まりそうな Google App Engine のスタンダード環境であれやこれや調べながら試行錯誤したのですが、
動くようになるまでかなり苦労した――元々インフラ周りが特に苦手なのが大きいですが――ので顛末を書き残しておきます。

## ローカル環境
ローカル環境はWindows 10 Pro、Ruby3.2.2、Rails7.1.2。
Docker 等の仮想環境や rbenv[^1] 等のバージョン切替などは特に入れていません。

## 基本手順

概ね公式ドキュメントや下記参考記事に則ったものなので詳細は割愛します。
その通りやっただけでは解決しなかった問題とその対処を次章以降で詳細に記します。
※Cloud SDK はインストール・セットアップ済前提

参考記事

https://mintaku-blog.net/gae-rails/

https://min

元記事を表示

【Docker】Can’t connect to MySQL server on ‘db’ (115)

# エラー内容
Can’t connect to MySQL server on ‘db’と表示され
dbコンテナが完全に起動する前にbackendコンテナが動作している。

“`cli:
user@usernoMacBook-Air backend% docker-compose up
[+] Running 3/2
✔ Network backend_default Created 0.0s
✔ Container db Created

元記事を表示

OTHERカテゴリの最新記事