Rails関連のことを調べてみた2021年12月25日

Rails関連のことを調べてみた2021年12月25日

rails7からhelperを使って生成されるtypeがhiddenのinputタグでautocomplete属性にoffが指定される様になった

# 概要

* `hidden_field_tag`
* hidden_field_for_checkbox

などの``を生成するヘルパーがあるのですが、これらを生成する時に強制的にautocomplete属性にoffが指定される様になりました。

“`ruby
# Before
$ hidden_field_tag ‘tags_list’
=> “

# After
$ hidden_field_tag ‘tags_list’
=> “
“`

# 詳細
Firefoxのバグでhidden fieldのautocompleteに意図しないランダムな値が入力される可能性があるとのこと。
例えばCSRF保護などrailsはたくさんhidden fieldを

元記事を表示

RubyとRuby on Railsの違い[3行で要約]

#結論

“`
・Rubyはプログラム言語の一つ。(他にはJava,PHPなど)
・Ruby on Railsはフレームワークの一つであり、言語ではない
・プログラミング言語Rubyで作成されているので、Ruby on Railsという名前になっている。
“`

#Ruby on Railsとは
Webアプリケーションフレームワークの1つです。Railsとも呼ばれています。

###Webアプリケーションとは
ブラウザを介してクライアントにサービスを提供する

##Ruby on Rails 特徴

“`
・MVCアーキテクチャ
・DRY(Don’t Repeat Yourself)
・CoC(Convention over Configuration)
“`

###MVCアーキテクチャ
Model,View,Controller設計法に基づいて開発を行います。

###DRY(Don’t Repeat Yourself)
DRY原則とは、同じこと(ソースコード)を繰り返し記述するのは避けよ

###CoC(Convention over Configuration)
設定よ

元記事を表示

Rails × Hasuraの共存環境を作ってみる

こんにちは!
気持ちは永遠の新卒1年目、いつの間にか3年目の株式会社エイチームコマーステック北村 (@NamedPython )です。

今日は、コマーステックがもしかしたら辿るかもしれない技術スタックを先行して検証していきます。
試す技術はタイトルにもある通り「**Rails × Hasura**」です。
役割分担としては、

– **Rails(API mode)**
– マイグレーション
– ビジネスロジック
– **Hasura**
– GraphQL Engine
– 単純なCRUD
– ゲートウェイ
– スケジューラー

みたいな感じにしたいな〜と想像しています。
シンプルなCRUDのGraphQLは**Hasura**にお任せ、複雑な処理は**Actions**で**Rails**に流したり、リゾルバを書いて**Remote Schemas**で**Hasura**に取り込んだりしてもいい。**Rails**でリゾルバを書くのが面倒なら別のバックエンドを立ててしまえばいい。これが実現できると、分厚くなりがちな**Ra

元記事を表示

【Rails】タイムゾーンの変更の仕方【初学者の疑問点を簡潔に解説】

## はじめに
 本記事は、プログラミングの学習を始めて1ヶ月の初学者が、学習を進めていて疑問に思った点について調べた結果を備忘録も兼ねてまとめたものです。
 そのため、記事の内容に誤りが含まれている可能性があります。ご容赦ください。
 間違いを見つけた方は、お手数ですが、ご指摘いただけますと幸いです。

## 今回の疑問点
 今回の疑問点は、

  _タイムゾーンの変更の仕方について_
 
 です。 

## 疑問点についての解説

###結論

config/application.rbファイルのApplicationクラスに`config.time_zone = ‘Tokyo’`を追記することでタイムゾーンを日本標準時間に変更することができます。

###詳しい手順
RailsではデフォルトのタイムゾーンはUTC(協定時)となっています。
created_atメソッドやupdated_atメソッドを使って時間を表示させると`2021-12-25 07:17:23 UTC`のよう9時間前の時刻が表示されると思います。
日本標準時間に設定するためには、config/applica

元記事を表示

RailsでWeb APIを作成する方法とメリット??

# まず始めに

おはようございます。こんにちは。こんばんは!
[DMM WEBCAMP Advent Calendar](https://qiita.com/advent-calendar/2021/infratop)の最終日を担当させていただきます

メンターのtanidaです!

今回はRailsで典型的なWeb APIサーバーを構築するハンズオンになります! よろしくお願いします!

*あまり細かい用語の説明はしませんが随時更新していく予定です。

使用するソースコードです
https://github.com/digitter/rails_api_sample

# この記事の対象者

– Ruby on Railsでアプリを作ったことがある人。

– Ruby on Railsの環境構築ができる人。

– Rails の API モードでサーバーの構築がしたい人。

~~- Rails で GraphQLサーバーをとりあえず構築したい人。~~

# Ruby, Railsのバージョン

– Ruby 2.6.3

– Rails 6.1系

# 典型的なREST APIを作

元記事を表示

Dockerで実装しているテーブルの内容をターミナルで確認する方法(rails)

# 備忘録として
Dockerを使ってrailsのアプリケーション実装をしている時に、
テーブルの更新内容を確認したくなったので調べた内容を記録しています。

#方法
“`
% docker-compose run web rails db
“`
上記のコマンドを入力すると
ターミナルに下記内容が表示されます

“`
psql (13.5 (Debian 13.5-0+deb11u1), server 14.1 (Debian 14.1-1.pgdg110+1))
WARNING: psql major version 13, server major version 14.
Some psql features might not work.
Type “help” for help.

○○_development=#
“`
#の後に

“`
\d テーブル名;
“`
と打てばテーブル詳細が表示されます。
__ex:__ “\d users;“
と入力すれば

“`

元記事を表示

RailsでDDDのバリューオブジェクトを実装してみる

## この記事は何
DDDを学んだ事がある方は「バリューオブジェクト」という名前を一度は聞いた事があるのではないでしょうか・
この記事ではRailsでバリューオブジェクトを実装するならどのような実装にすると良さそうかを紹介します。
なお、バリューオブジェクトの具体的な実装方針は千差万別だと思うので、この記事で紹介する実装はあくまで一例だと思っていただけるとありがたいです。

具体的なバリューオブジェクトの解説は↓の記事などが参考になると思います。

https://qiita.com/little_hand_s/items/f8c0d0858c895afed7e2

## バリューオブジェクトの条件
バリューオブジェクトは以下の条件を満たしている必要があります。
条件は以下の通りです。

– オブジェクトはイミュータブルである
– 値の変化はインスタンスの再生成で実現する
– オブジェクトの同一生はバリューオブジェクトが持つattributeの一致で定義される

Railsで実装する際も、これらの条件を満たす必要があります。
そしてバリューオブジェクトとして実装する以上、バリデ

元記事を表示

Dockerでyarnの依存関係を解決。

docker-compose upで

“`
RUN yarn upgrade

“`

の部分でエラーがでた。

“`
Step 13/19 : RUN yarn upgrade
—> Running in 3c8f3922483b
yarn upgrade v1.22.17
warning package-lock.json found. Your project contains lock files generated by tools other than Yarn. It is advised not to mix package managers in order to avoid resolution inconsistencies caused by unsynchronized lock files. To clear this warning, remove package-lock.json.
[1/4] Resolving packages…
info There appears to be trouble with your netwo

元記事を表示

MySQLが立ち上がらないときの解決策

“`
rake aborted!
ActiveRecord::ConnectionNotEstablished: Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (38)
“`
というエラーが発生した。`/tmp`ディレクトリを確認しても`mysql.sock`はしっかりと存在する。
mysqlを起動してみると下記のエラーが起こっていることが判明した。

“`
$ sudo mysql.server start
Password:
Starting MySQL
.Logging to ‘/usr/local/var/mysql/fujiwaratakuminoMacBook-Pro.local.err’.
ERROR! The server quit without updating PID file (/usr/local/var/mysql/fujiwaratakuminoMacBook-Pro.local.pid).
“`
というエラーが起こっていることが判明した。
#pidファ

元記事を表示

誰も教えてくれない!知らないと事故につながるエンジニアの隠れた5つの常識

この記事は[モチベーションクラウドシリーズアドベントカレンダー2021](https://qiita.com/advent-calendar/2021/mcs)の12日目の記事です。

こんにちは。モチベーションクラウドシリーズのテックリードをしている江上です。
突然ですが、今までに**「常識」**という言葉で傷ついたり、傷つけた経験はありませんか?
例えば、失敗した時に「なんでxxxしてないんだ!そんなの常識だろ!!」と先輩に怒られたり、「洗濯物はパンパンしてから干す!常識でしょ!!」と奥さんに怒られたり。。。
常識って、その人やその界隈では当たり前すぎるために、**継承が困難。なのに、知らないと事故につながる**とても大事な知識です。
そこでこの記事では、知らないと事故につながるような、エンジニアの隠れた常識を記していこうと思います。
あくまで、僕が今まで経験した職場や、他人から聞いた話をまとめた個人的な見解です。
「他にもこんな常識あるよ!」という方はコメントで是非教えていただければと思います。

※ 各所でRuby on Rails + MySQLを前提にした表現が出てきます

元記事を表示

Railsでエラーメッセージを表示させる方法

##手順
①バリデーションの定義
②エラーメッセージの記入
③エラーメッセージを日本語化

##①バリデーションの定義
エラーメッセージはエラーが発生すると、error.full_message内に格納される。

バリデーションはモデル内で定義。
以下のように書くと、nameかemailを空白で登録した際は登録できないようにするバリデーションを追加することができる。

“`
class User < ApplicationRecord validates :name, presence: true validates :email, presence: true end ``` ##②エラーメッセージの記入 エラーメッセージを記入する前に、前提として以下の3つを注意する。 ``・エラーメッセージ表示部分をformのテンプレートに記載せず、専用のパーシャルが作られていること。`` ``・特定のモデルに依存せず汎用的なつくりにする必要がある。格納場所はshared配下にすること。`` ``・エラーメッセージの表示方法はアプリケーションごとに異なるため、エラーメッセージを直

元記事を表示

エンジニア向け生産性Tips【定期更新】

この記事は[モチベーションクラウドシリーズアドベントカレンダー2021](https://qiita.com/advent-calendar/2021/mcs)の記事です。

# この記事はなに?
一日中PCと共に過ごすエンジニアにとって、Tipsほど知りたいことはないと思います。
この記事では、社内エンジニアに「生産性をあげるTips」をテーマにアンケート調査したものをまとめました。
特に新人エンジニアの方や手っ取り早くTipsを知りたい方におすすめの記事です。
まとめたアンケートからつらつら書いてるので、順番にまとまりはありません。あらかじめご了承くださいmm

※ この記事は定期的に更新されます。

# Chrome Tips
皆さんよく使うGoogle Chromeに関するTipsです。

#### ショートカット
まずは王道。ショートカットから!

https://support.google.com/chrome/answer/157179?hl=ja&co=GENIE.Platform%3DDesktop

#### Chrome Tab Group
こんなタブになるこ

元記事を表示

ActiveRecordのNullリレーションが便利そう

# はじめに

Railsガイドを読み返していたら便利そうなものを見つけたので備忘録代わりに残しておきます。

# Nullリレーション

> noneメソッドは、チェーン (chain) 可能なリレーションを返します (レコードは返しません)。このメソッドから返されたリレーションにどのような条件をチェーンさせても、常に空のリレーションが生成されます。これは、メソッドまたはスコープへのチェーン可能な応答が必要で、しかも結果を一切返したくない場合に便利です。

https://railsguides.jp/active_record_querying.html#null%E3%83%AA%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3

“`ruby
irb(main):001:0> User.none
=> []
irb(main):002:0> User.none.class
=> User::ActiveRecord_Relation
“`

こんな感じで、空のリレーション(Nullリレーション)を返してくれる。

“`ruby
ir

元記事を表示

chartkickのグラフが表示されない

# 環境

Docker
mysql 8.0
rails6.1.4
ruby3.0.2
intel版Mac使用

# 考えられる原因

view側(html.erb)のコードの記述の問題でうまくデータを抽出できてないかとも思ったが、
<%= pie_chart [['赤', 50], ['青', 50]]%>
と公式のお試しコードで記述してもグラフ出ないので、コーディングの部分ではなさそう。

chromeの検証でconsoleを調べた結果、エラーを発見。
“`
application.js:1 Uncaught Error: Cannot find module ‘chartkick/chart.js’
at webpackMissingModule (application.js:1)
at Module../app/javascript/packs/application.js (application.js:1)
“`

とりあえず、JSでエラーが起きてるのは間違いないみたい。
エラー文にはchartkickが見つかりません。と書いてある。

# 解決策

元記事を表示

Rust で API を作成して Rails の便利さを改めて実感した話

# 目次

– [はじめに](#はじめに)
– [想定読者](#想定読者)
– [作成した API について](#作成した-api-について)
– [概要](#概要)
– [開発環境](#開発環境)
– [フォルダー構成](#フォルダー構成)
– [本題](#本題)
– [Rocket & diesel と Rails それぞれの実装に対する比較](#rocketdiesel-と-rails-それぞれの実装に対する比較)
– [目的 1. API として使用できるために、Json や Status を設定できるようにする](#目的-1-api-として使用できるためにjson-や-status-を設定できるようにする)
– [目的 2. User 作成時に、 Validation からエラーメッセージを取得し、Json で返却する](#目的-2-user-作成時に-validation-からエラーメッセージを取得しjson-で返却する)
– [目的 3. Request Header の Token を用いて、ユーザー認証を

元記事を表示

IPアドレスと対峙することになった2年目エンジニアの記録

# はじめに
初めまして、私は現在リンクアンドモチベーションにてバックエンドエンジニアをしている中﨑です。
先日、私はIPアドレス制限機能の実装を任されましたが、お恥ずかしながらIPアドレスについてほとんど知りませんでした、、、
そんな私がリリース完了するまでに学んだことを記載していきたいなと思っています。
私と同じように「IPアドレスについてあんまり分かっていないな」という方や、「IPアドレス制限の実装をするよ」という方の参考になれば幸いです。

# 目次
– [基本知識](#基本知識)
– [IPアドレスに関わるライブラリ](#ipアドレスに関わるライブラリ)
– [IPアドレス制限を実装した時のこと](#ipアドレス制限を実装した時のこと)
– [前提](#前提)
– [IPアドレスの入力チェック(バリデーション)](#ipアドレスの入力チェックバリデーション)
– [IP制限検証時の性能について](#ip制限検証時の性能について)
– [ドキュメント用に記載するIPアドレスについて](#ドキュメント用に記載するipアドレスについて)

#基本知識
I

元記事を表示

【Rails】環境変数使うならHeroku側にも設定しないと当然エラーが出る件

# はじめに

転職のためプログラミングを勉強し始めて約4ヶ月が経ちました。
現在、Ruby on Railsを使用して音声の感情を判定するポートフォリオを製作しています。
API利用で音声をpostしてレスポンスをもらうコードをHerokuに反映させたときのエラーについて記事に残したいと思います。

# 結論先に
ローカルでAPIキーを環境変数に設定した場合、
Heroku側にも設定しなければならない

# エラーまでの経緯
今回使用したいAPIは一日の利用回数限度が設定されていた。
ポートフォリオで使うにはもう少し上限を上げたいと思い、開発企業側にコンタクトをとってみる。
幸い上限枠の拡張を快く了承してくれ、専用のAPIキーを発行してくれた。

このAPIキーをGitに晒すのは良くないので、
dotenvを使用して環境変数とすることに。

dotenvの公式資料はこちら↓
https://github.com/bkeepers/dotenv

.envファイルにAPIキーを定義して

“`:.env
API_KEY = ‘***********’
“`

R

元記事を表示

【Docker】Rails6 API + React(TypeScript)のSPA開発環境を構築する

# はじめに
自分用のメモとして記録しておきます。

https://github.com/taki-21/rails-react-ts-docker

# 1. ディレクトリ構成の確認と必要ファイルの用意
以下のディレクトリ構成になるようにファイルを用意する。
![スクリーンショット 2021-12-19 1.02.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646903/169bddcb-4ec9-4bdd-fe69-ac63f2d773bf.png)

“`bash
$ mkdir backend
$ mkdir frontend
$ touch docker-compose.yml
$ touch backend/Gemfile
$ touch backend/Gemfile.lock
$ touch backend/entrypoint.sh
$ touch backend/Dockerfile
$ touch frontend/Dockerfile
“`

# 2. docker

元記事を表示

【個人開発】学生エンジニアが今までの集大成として3ヶ月でアプリを作った話

**スケジュール**と**タスク**と**Wiki(ドキュメント)**をまとめて1つの**プロジェクト**として管理ができるアプリ**Gestee(ジェスティー)**を作りました。

GesteeLogo

# アプリを作ったきっかけ

私は学生なのですが、さまざまなことを同時にやっています。

– 研究
– インターン
– 個人開発 etc

いろいろな開発をやっていると、所属先によってgoogleアカウントを切り替えたりしなけらばなりません。
また、研究室ではドキュメント管理にesaを使っているけど、インターン先ではkibelaを使っているなど、別々に管理せざるを得なく、いちいちChromeのタブを増やしたりしなければなりません。

これらが嫌で、**スケジュール**と**タスク**と**Wiki(ドキ

元記事を表示

yarn upgrade-interactive –latestで依存を一気に解決。

“`
rails s

“`

を実行したら

npm rebuild node-sass
npm ERR! code 1
npm ERR! path /Users/soichirohara/coffee_passport/node_modules/node-sass
npm ERR! command failed
npm ERR! command sh -c node scripts/build.js
npm ERR! Building: /usr/local/bin/node /Users/soichirohara/coffee_passport/node_modules/node-gyp/bin/node-gyp.js rebuild –verbose –libsass_ext= –libsass_cflags= –libsass_ldflags= –libsass_library=
npm ERR! gyp info it worked if it ends with ok

npm ERR! gyp: No Xcode or CLT version dete

元記事を表示

OTHERカテゴリの最新記事