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

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

Fly.ioに個人アプリをデプロイしたのでメモ

Fly.ioに個人アプリをデプロイしました。色々記事を見比べながらやったので、次回のために流れをメモしようと思います。
デプロイするアプリは作成済みであることを前提とします。
## デプロイの流れ
### flyctlをインストール
Fly.ioが提供しているCLI(flyctl)で行うためインストールします。
“`
% brew install flyctl
“`
### サインアップ
初めて使う時は、アカウントの登録が必要です。コマンドを実行するとブラウザが立ち上がり、会員登録画面が表示されます。メールアドレスか外部認証を使って登録します。
“`
% flyctl auth signup
“`
### ログイン
アカウントの登録ができたら、ログインをします。コマンドを実行するだけで大丈夫です。

“`
% flyctl auth login
“`
### RailsとPostgreSQLサーバーの起動
`fly launch`コマンドを実行すると、質問文が表示されます。対話形式で答えて、設定していきます。
“`
% fly launch

# アプリケーションの

元記事を表示

Fakerとseed.rbでUserに紐づいたBoardダミーデータを作成

掲示板一覧機能の作成のために、Boardモデルを作りました。

今回は、Fakerを使ってseed.rbにuserに紐づいたboardのダミーデータを入れました。ただ、user_idの部分のコードがよく分からなかったのでメモに残します。
初学者なため間違っていところがあれば教えていただけると幸いです。
## seed.rbに記述するまでの流れ
まずは、seed.rbを作るためにgemをインストールします。
“`
gem “Faker”
“`
`bundle install`してseed.rbを作ります。

10人分のUserモデルのデータも作成してあります。
## seed.rbに記述したコード
20個の掲示板のダミーデータを入れたかったので、繰り返し処理でBoardモデルのカラムに対してこのようにコードを設定しました。
“`
20.times do |n|
Board.create(
user: User.offset(rand(User.count)).first,
title: “タイトル#{n}”,
body: “本文#{n}”

元記事を表示

polymorphic_path:部分テンプレートでリンク先を動的に変更する方法

ポートフォリオ制作中に、初歩的な部分だと思うのですが詰まってしまった部分があったのでメモに残そうと思います。
初学者なため、間違っているところがあれば教えていただけると幸いです。
## 前提
:::note info
Rails: 7.0.6
Ruby: 3.2.2
:::
– 編集リンクと削除リンクのアイコンをまとめた部分テンプレートを作っている。

– カテゴリー一覧とアイテム一覧で同じ部分テンプレートをrenderしたい。

– ページによってパスを動的に変えたい。
## 結論:polymorphic_pathを使う
削除ボタンに関しては、renderの時にlocalsで指定して変数を渡せばいいかなとイメージがついたのですが、編集ボタンがなかなかわかりませんでした。

色々調べた結果、

動的にリンク先を変えたい場合は、該当のパスの部分に`polymorphic_path`を使用すれば良いことがわかりました。

引数にモデルのインスタンスなどを渡すと、該当するurlを生成してくれるメソッドです。
“`ruby:shared/_crud_icon.html.erb

    元記事を表示

    【Rails】renderメソッドとは

    # renderメソッドとは
    `render`メソッドは、コントローラーからビューを描画するために使用されるメソッドです。これは、アクションメソッド内でビューを指定し、そのビューをHTMLとしてレスポンスとして返すために使われます。

    具体的には、`render`メソッドは以下のように使用されます。
    1\. **テンプレートの指定**
    “`ruby
    render :index
    “`
    上記の例では、`index.html.erb`という名前のビューファイルを描画します。

    2\. **オプションの指定**
    “`ruby
    render :show, layout: ‘application’
    “`
    この例では、`show.html.erb`ビューをレンダリングし、’application’というレイアウトを使用して表示します。

    3\. **変数の渡し込み**
    “`ruby
    render :edit, locals: { user: @user }
    “`
    この例では、`edit.html.erb`ビューに`@user`というローカル変数を渡して描画します。

    4\. **インラ

    元記事を表示

    【Rails】initializeメソッドとは

    # initializeメソッドとは
    `initialize`メソッドは、Active Recordモデルなどのクラス定義内で使用される特殊なメソッドです。このメソッドは、新しいオブジェクトが作成されたときに自動的に呼び出されます。通常、`initialize`メソッドは、クラス内でインスタンス変数の初期化や設定を行うために使用されます。

    例えば、以下はActive Recordモデル内でのinitializeメソッドの使用例です。
    “`ruby
    class User < ApplicationRecord attr_accessor :name, :email def initialize(attributes = {}) @name = attributes[:name] @email = attributes[:email] end end ``` この例では、`User`モデルの`initialize`メソッドが定義されています。このメソッドは、ユーザーが新規作成されたときに呼び出され、`name`と`email`のインスタンス変数を設定します

    元記事を表示

    【Rails】ヘルパーメソッドとは

    # ヘルパーメソッドとは
    ヘルパーメソッド(Helper Method)は、プログラミングにおいて、特定のタスクや処理を行うための便利な関数やメソッドのことを指します。これらのメソッドは、コードの再利用性を高め、可読性を向上させるために使用されます。

    主にウェブ開発のコンテキストで使われることが多く、特にフレームワークやライブラリにおいては、ビューやテンプレート内でのコードを簡潔にするためによく利用されます。

    具体的な例としては、以下のようなものがあります
    1\. **HTML出力の生成** : HTMLタグやフォーム要素、リンクなどの生成を行うメソッドがあります。これにより、ビュー内でHTMLコードを簡潔に記述できます。

    2\. **日付や時間のフォーマット** : 日付や時間のフォーマットを行うメソッドがあります。これにより、日付や時間を特定の形式で表示することができます。

    3\. **文字列操作** : 文字列の操作や処理を行うメソッドがあります。例えば、文字列の長さを取得したり、一部の文字列を置換したりすることができます。

    4\. **データの整形** : データの整

    元記事を表示

    【Rails】インポートとエクスポート

    # エクスポート(Export)
    データのエクスポートは、データベース内の情報を外部ファイルに出力するプロセスです。これにより、データをバックアップしたり、別のシステムに移行したりする際に便利です。エクスポートされるデータは、CSV(Comma-Separated Values)形式やJSON(JavaScript Object Notation)形式などの一般的な形式で出力されることがあります。
    # インポート(Import)
    データのインポートは、外部ファイルからデータを取り込んでデータベースに追加するプロセスです。このプロセスは、以前にエクスポートしたデータを元のデータベースに戻したり、別のシステムからのデータを取り込んだりする際に使用されます。インポートされるデータは、エクスポートと同じ形式である必要があります。

    Railsにおけるデータのエクスポートとインポートは、Active Recordやデータベースマイグレーションなどのツールを使用して行われることが一般的です。これらのツールを使うことで、データベース間でのデータの移行やバックアップ、リストアなどが容易になります。また

    元記事を表示

    お名前.comでドメインを取得して、さくらのネームサーバーを利用して、さくらVPSにCapistranoでRuby on Railsデプロイの手順

    # 概要
    こちらの記事はお名前.comでドメインを取得して、さくらのネームサーバーを利用して、さくらVPSにCapistranoでrailsデプロイを考えている方向けに、その手順(突っ込みどころ満載だと思いますが🙇‍♂️)を解説したものです。

    ## 1.お名前.comの設定
    ### 1.1 ドメインを取得したらやること
    #### 1.1.1 ネームサーバーをさくらのネームサーバーに変更する
    さくらのネームサーバーでAレコードを設定していくため、お名前.com上では特にこれ以外設定しなくてOKだと思います!

    ![スクリーンショット 2024-02-12 3.23.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1205047/ed0ffd10-c9f7-3372-b578-4f2d0b13e903.png)

    ## 2.さくらのネームサーバーの設定
    ### 2.1 Aレコードの設定
    #### 2.1.1 お名前.comで取得したドメインの登録
    [トップページ](https://secure.sak

    元記事を表示

    人生2回目のチーム開発を行いまして(アニメ聖地巡礼アプリ開発)

    # 1.はじめに
    自分は10月よりAPPRENTICE SHIP(内定直結型エンジニア学習プログラム)のカリキュラムに2期生として参加しています。
    この記事は2回目のチーム開発を行なって、振り返りを記事にしたものとなります。

    # 2.イントロ:前回の振り返り
    前回、フルスタックフレームワークを使用せずにチーム開発を行いました。
    その中での反省点が色々と浮き彫りになりました。
    今回の開発ではその反省を踏まえて開発ができたのでしょうか?
    [前回のチーム開発備忘録の記事](https://qiita.com/hirapg_1123/items/27efa01618181b2fe324)

    # 3.2回目の開発体制と開発テーマ
    さて、開発体制ですが1人増え4人体制となりました。
    前回同様、初対面の方々と開発していく流れとなります。
    その中で開発するテーマが「ワクワクするものを開発せよ!」
    なかなかに掴みどころのない、テーマでしたが我々のチームはワクワクというテーマをどう捉えたかというと。。。

    # 4.みんなで作る聖地巡礼アプリ「Animecca」
    ## どういったアプリか?
    ワクワクする

    元記事を表示

    【Rails】namespaceとは(管理者と会員の閲覧ページを管理)

    こんばんは!
    今日からいよいよスクールのチーム開発が始まりました!
    これまでは管理者側の機能を作ることがなかったため、namespaceというものを初めて知りました。本記事ではnamespaceの理解を深めるためにまとめていきたいと思います。

    ## namespaceとは??
    namespace とは、決めた名前でルーティングのグループ分けをするための仕組みです。

    例えばECサイトの場合、会員が見ることができるページと管理者のみ見ることができるページを作る必要があります。そのために同じファイル上でif文を用いて管理者と会員で閲覧部分を分けるのは可読性も下がりますしコードが複雑化します。また、コントローラーの名前とモデル名が統一されていないため、設計上あまり好ましくありません。

    この問題を解決できるのが、**namespace**です!

    ## namespaceの実装
     同じデータを扱うコントローラーとviewを会員側と管理者側の2つ作成し、publicフォルダとadminフォルダに分けて管理します。また、ルーティングも会員側と管理者側で分けます。

    ### コント

    元記事を表示

    【Rails】sessionとは

    # sessionとは
    `session`は、ウェブアプリケーションにおいてセッション管理を行うための仕組みです。セッションとは、ユーザーがウェブサイトやウェブアプリケーションにアクセスしてから、ブラウザを閉じるまでの間の一連の操作を指します。セッションを管理することで、ユーザーごとに状態を保持し、ユーザーの体験をカスタマイズしたり、認証情報を保存したりすることができます。

    Railsの`session`は、サーバーサイドでセッション情報を保持し、クライアントとの通信においてセッションを識別するための一意な識別子(通常はクッキー)をクライアントに送信します。これにより、ブラウザのクッキーを使用してユーザーごとにセッション情報を保持することができます。

    `session`を使用することで、以下のようなことが可能になります。

    1\. ユーザーの認証状態の管理: ログインしたユーザーの情報をセッションに保存し、ログアウトするまで維持します。

    2\. 一時的なデータの保存: フォーム入力などの一時的なデータをセッションに保存し、次のリクエストで使用します。

    3\. セッションベースの

    元記事を表示

    チームハッカソンでお茶会アプリを作成しました

    # 記事概要
    この記事では筆者が人生で2回目のハッカソンに参加した話をします.
    アイデア出しからアプリが完成までの流れと,KPT(Keep, Problem, Try)による振り返りをまとめました.

    今回は気軽にお茶会を作成できるアプリを作成しました.
    お茶会?なんで?と思ったかも知れないですが,もちろんただのお茶会ではないです.
    完成したアプリはこんな感じです

    ### アプリのGIFをはる

    なぜお茶会なのか?などの疑問は「アプリ完成までの流れ」の章に書いてあります!

    最後まで読んでいただけたら幸いです.

    # ハッカソンとチームの概要
    今回のハッカソンのテーマは「ワクワクするものを作成せよ」でした.
    期間は一週間です.
    チーム構成は4人で,そのうち2人は別に仕事を掛け持ちしていたこともあり,自分の担当領域は全体の30%ほどでした.

    # アプリ完成までの流れ
    まずは,アプリ完成までタスクの流れをざっとまとめます!

    1. アイデア決め,要件定義
    1. 設計
    1. タスクだし
    1. 環境構築
    1. 実装

    今回の開発はウォーターフォール型開発だったので,特に上流工程ではスピード

    元記事を表示

    初学者が押さえておきたいRailsの文法まとめ

    ## はじめに
    これだけは覚えておきたいというRailsの用語や概念について自分用の備忘録としてまとめてみました。基本的なものだけを紹介しているので、より詳しく知りたいものについては適宜ご自身で調べながら読み進めて頂けると幸いです。

    また、こちらはプログラミング初学者がまとめた記事となりますので間違っていることがあるかもしれません。その際はご指摘等頂けると幸いです。宜しくお願いします。

    ## 本記事の内容
    Railsでよく使われる文法の解説。

    ## 対象者

    Rubyの基礎文法を学んだことはあるが、Railsについては勉強したことがない初学者の方。

    ## アプリの基本設定

    生成ファイルの設定に関しては、` config/application.rb `に記述をする
    `config.generators`ブロック内に必要な設定を記述する

    `code:application
    “`ruby:application.rb
    config.generators do |g|
    g.skip_routes true
    g.assets false
    g.helpe

    元記事を表示

    【 ruby-openai 】エラーハンドリングをカスタマイズしたいゴリラの備忘録

    # 初めに
    皆さん、お疲れさマッチョです!💪
     
    今回、私が個人開発したWebアプリ『トレゴリ』についてユーザー様からフィードバックをいただき、急ぎ対処する必要があったとともに少々問題内容の理解に手こずってしまったため、備忘録として記事を作成しました。
     

    :::note warn
    **注意点**

    今回の記事に関して、一部内容に誤りがある場合がございます事をご了承下さい。
    もし誤りに気づかれた際は、コメント等でご教授いただけると助かります🙇‍♂️
    :::

    # アプリ機能について
    まずエラー内容についてお話しする前に、私が開発したアプリ内容について少々ご説明の方させていただきたいと思います。
     
    私が開発した『トレゴリ』は、大きく以下の機能があります。
     
    – ホーム画面の入力フォームにて運動内容を入力 → 運動内容がデータベースに保存され、バナナを1本取得する(運動内容の入力・バナナの取得に関しては1日1回のみ)
     
    – 運動内容を含むプロンプトを生成し、OpenAI APIへリクエストを送信 → 運動内容に対する労いの言葉を生成し、レスポンスを返す。
     
    – 取得したバナナを5

    元記事を表示

    GitHubActionでrails×dockerアプリをECSへデプロイする

    業務でGithubactionを使用した自動デプロイを実施したので記録

    # GitHubActionsとは
    CI/CDを実装する際に利用できるワークフローの自動化ツール。
    Githubへのpushやプルリクのクローズなど様々な条件をトリガーに自動デプロイやテスト、リンターの実行などに使うことができる

    # 前提
    – 業務でRuby on RailsのアプリケーションをDocker環境にて開発
    – インフラはAWS ECR,ECSを使用
    – デプロイはecspressoを使用

    # 実行するデプロイ処理イメージ
    1. ECRへのpush、ECSのサービス更新ができる権限をcredencialをAssumeroleで取得
    2. ECRへdockerイメージのビルドとプッシュ
    3. DBマイグレーションの実行
    4. ECSサービス更新
    5. Slack 等へ完了・エラー通知

    # 実際の実装
    “`name: deploy_to_prd
    on:
    pull_request:
    types:
    – closed
    branches:
    – main

    en

    元記事を表示

    Ruby on Rails5初学者が一度でもつまずいたところをメモする

    ## 新しいアプリケーションを立ち上げたい
    “`ruby
    rails new “アプリケーション名”
    “`

    “`ruby
    rails new myapp
    “`

    ## railsサーバーを起動する
    “`ruby
    rails server
    “`

    ## コントローラーとアクションの作成
    “`ruby
    rails generate controller “コントローラー名” “アクション名”
    “`

    “`ruby
    rails generate controller home top
    “`
    そうすると以下のものが生成される
    “`bash
    create app/controllers/home_controller.rb
    route get “home/top” => “home#top”
    invoke erb
    create app/views/home
    create app/views/home/top.html.erb
    invoke rspec
    creat

    元記事を表示

    【Rails・MySQL・初心者】VS Codeのdevcontainerで作る開発環境

    ## はじめに
    個人開発をしていると、アプリ開発を進めている内に環境構築の手順などを忘れてしまって、後から「このアプリの環境構築手順ってどうやるんだっけ?」となる事があると思います(PC変えたときとか、README.md書くときとか)。
    後から友達が開発へ加わることになった場面などでも、環境構築の手順を説明するのが大変だったりします。

    そのような悩みを解決する方法の1つが、VS Codeのdevcontainerの拡張機能になります。
    ## devcontainerの概要
    devcontainerはVS Codeの`Dev Containers`という拡張機能を使って立ち上げる、開発用のDockerコンテナです([公式ドキュメント](https://code.visualstudio.com/docs/devcontainers/containers))。
    devcontainerには以下のようなメリットやデメリットがあります。

    ### メリット
    1. コンテナを立ち上げるだけで、同じ開発環境を再現することが出来る
    – 開発環境をコンテナ化することで、異なるホストマシンでも

    元記事を表示

    i18n × form.label の使い方 【Rails】

    # この記事のまとめ
    **`<%= form.label :column %>` で `ja.yml` の `column` にアクセスしたい時は**


    “`erb:app/views/users/new.html.erb
    <%= form.label :email %>
    <%= form.email_field :email, id: :user_email, class: "form" %>
    “`

    以下のように
    `locals/activerecord/ja.yml` に `activerecord: attributes: model: column`
    に記述すれば良いです。


    “`yml:locals/activerecord/ja.yml
    ja:
      activerecord:
        models:
          user: ユーザー
        attributes:
          user:
            email: メールアドレス
    “`

    # i18n × `form.label`
    いつものごとくRailsの魔術です。
    “`erb
    <%= for

    元記事を表示

    通知機能つけてみた

    概要

    ToDoアプリに「いいね」や「コメント」などがついた時の通知を受け取れるようになるためのコードを書いた。
    前提として通知させたい機能は既に制作したものとする。
    model => controller => view の順でプログラムしていこうと思う

    完成イメージ


    model

    “`ruby:create_notices_rb
    class CreateNotices < ActiveRecord:

    元記事を表示

    【Rails】local: trueとは?

    # local: trueとは
    Railsにおける`local: true`は、リンクやフォームなどのHTML要素で使用されるオプションの一つで、リンクやフォームの送信をローカルなリクエストとして扱うことを指定します。

    通常、Railsではリンクやフォームを生成する際に、外部のURLや他のサーバーに対してリクエストを送信するようになっています。しかし、`local: true`を使用することで、そのリンクやフォームの送信を現在のアプリケーション内で処理されるローカルなリクエストとして扱います。

    例えば、以下のように`link_to`ヘルパーを使用してリンクを生成する際に`local: true`を指定することができます。
    “`html
    <%= link_to "Home", root_path, local: true %>
    “`
    この場合、`root_path`へのリンクがクリックされたときに、そのリクエストはローカルなリクエストとして処理されます。つまり、ページ遷移が発生せず、**現在のページ内でリクエストが処理される**ようになります。

    このオプションは、特にAjaxを

    元記事を表示

    OTHERカテゴリの最新記事