Rails関連のことを調べてみた2023年01月30日

Rails関連のことを調べてみた2023年01月30日

【初心者向け】git clone後に生じるアプリケーションのエラーについて

## はじめに
 先日、githubのリポジトリからローカル環境にアプリケーションをクローンし、動作確認をしようとしたところエラーが生じてしまいました。解決策を発見できたので共有します。

## アプリケーションの動作確認
 リポジトリから自作のアプリケーションをクローン。サーバを立ち上げて動作確認をしようとすると・・・
![ツイートアプリケーション課題で出ているエラー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3116202/69203d9e-819e-c6aa-d515-115ee220a22e.png)

 __あれ・・・?なんで?   リポジトリにpushする前はちゃんと動いていたのに・・・__

## 解決策を探る
 いろいろ調べてみると、アプリのディレクトリでbundleをインストールすると問題が解決できる可能性があることが判明しました。さっそく、「bundle exec rake webpacker:install」を実施し、サーバを立ち上げ、アプリを開いてみると・・・

![2

元記事を表示

いいね機能の非同期化

# 1.非同期機能とは
– 画面全体を更新せずに、一部だけ更新すること
– Ajaxという手法が使用されます。

# 2.実装
### 2−1.リンクに`remote: true`を追記する
– これにより、リクエストがhtml形式からjs形式になる
“`:app/views/posts/show.html.erb
<% if current_user && @post.favorited_by?(current_user) %>
<%= link_to post_favorites_path(@post), method: :delete, remote: true, class: "favorite_btn" do %>
♥<%= @post.favorites.count %> いいね
<% end %>
<% else %>
<%= link_to post_favorites_path(@post), method: :post, remote: true, class: "favorite_btn" do %> #ここ
♡<%= @post.favor

元記事を表示

プログラミングスクール2ヶ月目。rails コマンド メモ

今まで学んだことを書いていこうかなと思いまして、アウトプット用に記事を書かせていただきます。
1ヶ月目では、html,css,ruby,railsで、基礎を学んできました。
html/cssでは、メディアクエリ、bootstrapを学び、
アプリケーションの作成から、gemの導入、bootstrapの導入などを学びました。

railsで投稿アプリの作成が主でした。
deviseというgemを導入し、新規登録、ログイン、ログアウト機能を実装し、
そこから、投稿、編集、削除といった機能を学んできました。

今月2ヶ月目では、4人でのチーム開発を体験しました。railsで、ECサイトの制作なのですが難しかったです。何が難しかったかと言いますと、githubですね。

コミュニケーションでお互いの進捗を確認し、コンフリクトが起きないようにしていました。
それと、マージ先。作業ブランチなど。
チーム開発においての、gitを理解するまで1日を費やしました。今もまだ完全な理解は遠く及んでいませんけど。

メンバー同士で話し合い、プルリクからマージをするように決めました(慣れていないので)
ma

元記事を表示

Rails×MySQL dockerで開発環境を構築する

# 今回指定したバージョン
– Rails version 6.1.7.1
– Ruby version 2.7.7
– MySQLは最新version
– nodejsは互換性のある version16
# 条件
– docker-compose upでrails serverを起動できるようにすること
– ホストのファイルシステムとコンテナのファイルシステムを同期させること

## Dockerfile
– まずは、apt-getでyarnを入れたもの
“`
# Node.js & Yarn
FROM node:16-buster-slim
RUN yarn install

FROM ruby:2.7.7
RUN apt-get update
RUN apt-get install -y \
build-essential \
libpq-dev \
nodejs \
default-mysql-client \
yarn
default-mysql-client

WORKDIR /rails-docker-mysql
COP

元記事を表示

アセットパイプラインについてと、Railsの画像保存場所

# はじめに

#### ※以下の内容には誤りが含まれる可能性があります

Railsで画像を使った際、アセットパイプラインについて調べたことをまとめました。

# 具体的な内容

## アセットパイプラインとは

JavaScriptやCSSのアセットの最小化または圧縮して連結する工程のことです。

この機能でブラウザがWebページをレンダリングするためのリクエスト数を減らすことができます。

Webブラウザが同時に処理できるリクエスト数には限りがあるので、同時リクエスト数を

減らすことができればその分読み込みが高速になります。

## Sporocketsとは

Gemの1つで、Sporoketsを使いアセットパイプラインをしています。

ですが、Rails6系からはwebpackというモジュールバンドラを使用することが多くなっ

ています。役割としてはSporoketsと同じで複数あるJavaScriptファイルを1つにま

とめることができます。

違うのはJavaScriptの依存関係を考慮しなが

元記事を表示

Ruby Dateクラス

# Dateクラス
Dateクラスは、Rubyの標準ライブラリの機能です。
これを使うには、下記一文を記述する必要があります。

“`ruby
require “date”
“`

# Dateクラスを使ったプログラムの例を紹介

“`ruby
require “date”
day = Date.today.wday
puts day
“`

“`
0
# ターミナル出力例
“`

***wday***は、曜日を0(日曜日)から6(土曜日)の整数で取得する、Dateクラスに用意されているメソッドです。
上記の記述を実行すると、その日の曜日に合わせた数字がターミナルで出力されます。
今日が日曜日だったら、0が出力されます。

## 0から6の整数ではなく、日曜日, 月曜日, 火曜日, 水曜日, 木曜日, 金曜日, 土曜日 で取得したい場合はどうする?

“`ruby
require “date”
day = Date.today.wday
days = [“日曜日”, “月曜日”, “火曜日”, “水曜日”, “木曜日”, “金曜日”, “土曜日”]

puts day

元記事を表示

Ruby on Railsメモ

# ruby on railsの仕組み
– URLをたたく
– ruby on rails内のルーティング機能がルーティングテーブルを参照し、コントローラとアクションを取得する。
– コントローラとアクションがコントローラ機能に渡され、コントローラ機能が、対応するHTMLファイルを検索する。
– コントローラがモデルを経由してデータベースからデータを操作(取得・挿入・削除など)
– ビュー機能がブラウザにHTMLファイルを返す。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281030/5ac67c2d-f09d-ee0c-b19d-3a20c41b914e.png)

# フォルダ構成例
– app
– assets:資産
– config:
– stylesheets:スタイルシート可能場所
– home_scss
– controllers:コントローラ格納場所
– home_controller.rb
– views:H

元記事を表示

DockerでRailsAPIとReactとGraphQL、MySQLの環境を構築し、更にGithubActionsでCIを設定し、最後にHeroku(有料)+Vercelにデプロイするまでの流れ。

## 自己紹介
渋谷のGMOペパボという会社でエンジニアをしております。ほりゆうと申します。
Twitterではyukiという名前でも活動しています。

最初のキャリアは高等学校の国語科の教員で、今はエンジニアになって2年ちょっとが経ちました。
エンジニアとしては2社目です。よろしくお願いします。

少し宣伝です。GMOペパボではエンジニアを積極的に採用しており、研修付きの採用枠もあります。
福利厚生も充実していて、最近は無料のジムを使わせていただいております。
少しでも興味のある方はいつでもDMください!

[GMOペパボ株式会社 採用サイト](https://recruit.pepabo.com/)
[yuki\(ほりゆう\)@運動(@yuki82511988) / Twitter](https://twitter.com/yuki82511988)

### なぜこのアプリを作ったのか。この記事を書いたのか。
背景として、自分はエンジニアになる際にプログラミングスクールDMM WEBCAMPさんでの学習を経て転職を行いました。
転職活動の際、なかなかスクール以外のチーム開発経験を

元記事を表示

Finched Rails CLI で Rails環境をサクっと構築(必要なのはFinchだけ)

## はじめに

[Finch](https://github.com/runfinch/finch)さえあれば他何もインストールすることなくRailsを簡単に試せる方法([Finched Rails CLI](https://github.com/yokawasa/finched-rails-cli))を紹介をします。 Finchとは、AWS により開発されたLinuxコンテナーを構築、実行、公開するためのOSS CLIです。Finchさえあれば、いくつかのコマンドをコピー&ペーストするだけで、Railsアプリをすばやく起動できます。 なお、Finched Rails CLI は [Docked Rails CLI](https://github.com/rails/docked)のフォークであり、ほぼほぼフォール元流用でDockerじゃなくてFinchで動かすようにしただけというものです。

> 注意: 2023年1月現在、FinchはmacOS (すべてのMac CPUアーキテクチャ)のみをサポートしています。将来的な他のアーキテクチャのサポートについては、[Finchリポジトリ

元記事を表示

[Rails7]でcredentials.yml.encをVSCodeで開けなかったので、その解決法

# はじめに

credentials.yml.encをVSCodeで編集しようとした際に、開けなかったのでその解決法です。

【環境】

-ハードウェア情報
MacOS Monterey(version: 12.6.2)

-ソフトウェア情報
・Ruby Version: ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-darwin21]
・Rails Version: 7.0.4.2

# 発生した問題

“`bash
% EDITOR=”code –wait” rails credentials:edit
File encrypted and saved.
“`

と表示されて、ファイルが開かないという状況。

# 解決法

結論、VSCodeのパスが通っていないことが原因でした。

確認のため、プロジェクトフォルダでcodeコマンドを実行しても認識してなかったら同じ現象だと思われます。

“`bash
% code .
zsh: command not found: code
“`

VSCode内でパ

元記事を表示

部分テンプレート

# 部分テンプレートとは
– 繰り返し使用するコードを取り出してひとつのファイルで管理できる仕組み

# 部分テンプレートの作成
– 部分テンプレートとして運用するファイル名の先頭に_(アンダースコア)をつけるだけ
“`
_〇〇.html.erb
“`
### 部分テンプレート内の記述について
– 部分テンプレート内では、インスタンス変数を使用するのは適切ではないためローカル変数で記述する。

# 使い方
“`
# 基本の記述
<%= render [部分テンプレートファイルの指定], [ローカル変数]:[渡す値] %>
# 使用例
<%= render partial: "ディレクトリ名/〇〇", locals: { post: @post } %>
# これで部分テンプレートのなかで、postのなかに@postを格納できる
“`
– renderメソッド
部分テンプレートを呼び出すメソッド

– partialオプション
renderメソッドで使用
オプションで部分テンプレート名を指定して、部分テンプレート呼び出せる。

– localsオプション
renderメソッド

元記事を表示

Ruby 引数

# 引数とは
メソッドに渡すことができる値のこと。

# 実引数と仮引数
“`ruby
def メソッド名(仮引数)
# 処理
end

# メソッドの呼び出し
メソッド名(実引数)
“`
メソッドを定義したときに()内に記述しておき、処理に利用するときは***仮引数***。
メソッドを呼ぶときに()内に渡す値を記述するのが***実引数***があります。

“`ruby
def メソッド名(第一引数, 第二引数)
# 処理
end

メソッド名(第一引数, 第二引数)
“`
引数は複数利用されることがあります。
そんなときは、()内、左から順に第一引数、第二引数、第三引数…と呼びます。


“`ruby
def get_weather_forecast(weather)
puts “明日の天気は#{weather}です”
end

get_weather_forecast(“晴れ”)
“`

“`
# ターミナル出力
明日の天気は晴れです
“`

– この例の場合、実引数=”晴れ”、仮引数=weatherですね。

元記事を表示

配列をactiverecordへ変換する

# はじめに
find_in_batchesメソッドはactiverecordに対してのみ使用できるので配列をactiverecordへ変換したい

# 方法
配列に格納されたデータのidのみを別の配列に格納する
(push・・・配列に要素を追加)
“`
@channel_ids = []

channels = user.channels
channels.each do |channel|
@channel_ids.push(channel.id)
end
“`

idのみを格納した配列をwhere句へ指定して、再度データを取得することでactiverecordへ変換したデータが取得できる
“`
target_channels = Channel.where(id: @channel_ids)
“`

# 参考文献
もっと簡単に書けました
“`where(id: user.channels.map(&:id))“`

– [Railsで配列をActive Record Relationに変換したい](https://qiita.com/fgem28/items/25

元記事を表示

Ruby on Rails Webアプリケーションの雛形を作ろう

# アプリケーションを立ち上げるときのコマンド
条件
– Railsのバージョンは6.0.0を用いる
– アプリケーション名は、「output_projects」
– データベース管理システムにMySQLを使用する

“`
rails _6.0.0_ new output_projects -d mysql
“`

# データベースを作成するためのコマンド

“`
rails db:create
“`
サーバーサイドは、アプリケーションとデータベースがセットで存在しています。
アプリケーションにおいて、データベースは必要不可欠なものです。

# ローカルサーバーを起動するコマンド
“`
rails s
“`
sはサーバーのsです。

元記事を表示

ActionView::MissingTemplate in Devise::Registrations#Newエラー

# エラー内容
`devise`を導入し、ユーザー新規登録画面とログイン画面を実装中のこと。
viewsファイルで`<% render %>`を用いて
部分テンプレートを呼び出そうとした際に発生。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2929112/fa9c384b-6709-965c-5bb8-382fb97260c8.png)

現在の階層↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2929112/26b3001b-1d71-caa1-93a3-13d2bbb8af27.png)

# 仮説

– 誤字脱字の確認
– renderの呼び出し方法(階層位置の確認)

上記ではエラー解決に至らず。

[Qiita](https://qiita.com/pontarou194/items/47e130e9c7e08225f109)で調べたところ

~~~ruby
<%

元記事を表示

&. (ぼっち演算子)

# はじめに
ぼっち演算子をつけるべきか、つけないべきかよく迷うのでメモ

## ぼっち演算子
オブジェクトに対してとあるメソッドを呼び出した時
そのオブジェクトがnilでない場合・・・実行結果を返す
nilの場合・・・nilを返す

## 使い方
“`オブジェクト&.メソッド“`

## 迷いポイント
.&のまえのオブジェクトがnilの可能性がある場合につける

①userがnilの可能性がある場合・・・すべてのメソッドの前にぼっち演算子が必要
user&.infomation&.credit&.id

②userがnilの可能性がない場合・・・userのうしろにぼっち演算子は不要
user.infomation&.credit&.id

③userとuserに紐づくinfomationもnilの可能性がない場合・・・userとinfomationのうしろにぼっち演算子は不要
user.infomation.credit&.id

## まとめ
&. (ぼっち演算子)をつけるのは.&のまえのオブジェクトがnilの可能性がある場合のみ!!
※色々なところにつけると、コードを見た人

元記事を表示

rails db:create 違うdevelopment生成

# はじめに

フリマアプリ作成時に`rails db:create`実行時に
アプリ名ではない`development`が作成されてしまうエラーが生じました。

# 仮説
調べたところ↓
https://prograshi.com/framework/rails/change-db-name/

`database.yml`での設定がおかしい様子。

~~~
development:
database:○○○○○○_development

test:
database:○○○○○○_test
~~~

と修正後
`bundle install`
`rails db:create`実行後

無事、解決できました。

元記事を表示

Slack::Notifierをrspecでmockする

SlackNotifierのmock方法の記事が見つからなったため書いてみました。

“`rb
let(:slack_mock) { double(‘slack’) }

subject { #処理を定義 }

# pingレシーバーを定義
before(:each) do
allow(Slack::Notifier).to receive(:new).and_return(slack_mock)
allow(slack_mock).to receive(:ping)
end

it ‘Slack通知が実行されない’ do
expect(slack_mock).to receive(:ping).never
subject
end

it ‘Slack通知が1回呼び出される’ do
expect(slack_mock).to receive(:ping).once
subject
end

# メッセージまで検証したい場合は下記の通り

it ‘Slack通知に想定メッセージが渡され実行される’ do
expect_message = “test”

元記事を表示

[Rails7]kaminariを実装するときに起きたエラーと対処法

# エラー1つ目
https://qiita.com/mmaumtjgj/items/771deb2f3da3eecb4f54

こちらの記事を参考にpagenate機能を実装しようとしていたところ、undefined method `page’ for #

元記事を表示

[Rails]実務のコードは膨大すぎて大変だった。全体のコードの把握するためのコツとは。

## 実務のコードは膨大すぎて大変だった!
Railsで下記のサービスを作ったことはありますが、やはり、実務としてのコードは膨大すぎて、初めて実務に入った時は大変な思いをしました。

https://qiita.com/parkon_hhs/items/98304bc5112f0e0f6faf

私だけがわからなかったことかもしれませんが、膨大なコードを把握するために知っておくといい項目をいくつかまとめてみようかと思います。

## 環境
– Rails
– VSCode
– macOS

## Railsのコードの動きの把握
最初にRailsのコードの把握するコツを紹介します。
#### どこにも定義されてないメソッドについて
例えば`post_controller.rb`に定義されてないのに使われているメソッドがありますね。
それは主に`modelで定義されたメソッド`か`gem専用のメソッド`の可能性が高いです。

まずは`post_controller.rb`なので、`model/post.rb`を調べてみましょう。モデルメソッドがコントローラーで使われているかもしれません

元記事を表示

OTHERカテゴリの最新記事