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

Rails関連のことを調べてみた2022年12月27日
目次

ActionDispatch::Request::Session::DisabledSessionError: Your application has sessions disabled. To write to the session you must first configure a session storeが発生した時の対処法

# 概要
– ruby 3.1.2
– rails 7.0.4
– railsはAPIモードで利用
# 結論
config/application.rbに以下の3行を追記すれば解決する。
“`config/applicaton.rb
config.session_store :cookie_store, key: ‘_interslice_session’
config.middleware.use ActionDispatch::Cookies
config.middleware.use config.session_store, config.session_options
“`
参考になれば幸いです。
# 参考文献
– [Rails 7.0.1 with disabled Sessionstore ctionDispatch::Request::Session::DisabledSessionError (Your application has sessions disabled. To write to the session you must first configu

元記事を表示

bundle exec rails db:create できない

% brew services restart postgresql
してみよう

元記事を表示

Rails データベース作成 モデルの基本操作

この記事でわかること

      ・Railsモデルの基本操作について。

モデルを作成する

まずは、モデルを以下のコマンドで作成します。

“`Bash:console
rails generate model <データ名:データ型> <データ名:データ型>
rails generate model User name:string email:string
“`

すると以下のようなコードが表示されます。

“`Bash:console
invoke active_record
create db/migrate/20221226012605_create_users.rb
create app/models/user.rb
invoke test_unit
create test/models/user_test.rb
create test/fixtures

元記事を表示

[続] Rails Consoleなど任意の場所、Inlineで任意のViewを任意条件でRenderする

# TL;DR

“`ruby
ac = ApplicationController.new
ac.instance_variable_set(:@user, User.find(42)) # インスタンス変数をインジェクション
ac.render_to_string ‘users/show’, # レンダリングしたいテンプレート
layout: false, # `layout: false`がないとエラー
locals: { params: {} } # ローカル変数が使われる際、セットが必要

=> “\n\n\n\nUser ID: 42\n\n\n\n

User Name: Foo

\n\n\n”
“`

# 本文
去年はとある問題を解決するために、**[「Rails

元記事を表示

Google Analytics 4 のイベントをサーバー側から送信する方法を調べてみた

## はじめに

Google Analytics 4 のページビューやイベントを仕込む際は、クライアント側(View)に仕込むのが多いとは思いますが、サーバー側からイベントを送る必要が出てきたため、その方法についてまとめています。

※「Ruby on Rails」の環境で調査していたので、言語はRubyにて試しています。

## プロパティおよびデータストリームを準備する

こちらに関しましては、細かく説明してしまうと長くなってしまうので、公式のドキュメントへの参照のみとします。
(検索で色々とわかりやすい記事が出てくると思います)

– プロパティ設定
– https://support.google.com/analytics/answer/9304153?hl=ja&ref_topic=9303319
– データストリームに関しては、今回はウェブで進めていきます。

## 測定IDを確認する

先ほど作成したデータストリームから測定IDが確認できるので、そちらを保存しておきます。

– テータストリーム画面から作成した項目を押下します

元記事を表示

Module#concerningとは

## はじめに
[Ateam Group U-30 Advent Calendar 2022](https://qiita.com/advent-calendar/2022/ateam-group-u30)の18日目は、 @mayobimu が担当します!

https://qiita.com/advent-calendar/2022/ateam-group-u30

## Module#concerningとは
Rails 4.1.0で追加された機能
Rails 4.0で追加されたActiveSupport::Concernをより使い方の幅を広めることができる

## 何が変わったの?
### ActiveSupport::Concernの場合

– `app/models/concerns/`or`app/controllers/concerns/`からincludeする必要がある

https://qiita.com/mayobimu/items/e05a8f9d496200a0c3ec

### Module#concerningの場合

– 同じmodelsファイルから

元記事を表示

rails db:migrateのエラーについて(StandardError: An error has occurred, all later migrations canceled:)

## はじめに
エラーの対処法メモ。

“`
== 20221226020652 DeviseCreateUsers: migrating ================================
— create_table(:users)
rails aborted!
StandardError: An error has occurred, all later migrations canceled:
以下、続く
“`
この記述はエラーが出たのでマイグレーションをキャンセルしたという記述。
この後の記述でエラーの詳細を見ます。
## 原因
“`

Mysql2::Error: Invalid default value for ‘hoge’

ActiveRecord::StatementInvalid: Mysql2::Error: Invalid default value for ‘hoge’

Mysql2::Error: Invalid default

元記事を表示

【Rails】コメント削除ボタンをコメントしたユーザーのみ表示させるには。

# はじめに
プログラミング初学者の者です。オンラインでプログラミングを学習させて頂いてるのですが、さらに理解を深めていきたいと思い、学習したことを備忘録として、残して理解を深めていきたいと思います。
また、間違った点など、ありましたら、ご指摘いただけると幸いです。よろしくお願いします。

# コメント削除ボタンをコメントしたユーザーのみ表示させるには。
現状下記の状態では全ユーザーに削除ボタンが現れてしまい、削除できる状態でした。
“`app/views/recipes/show.html.erb

<% @comments.each do |comment| %>

<%= comment.user.user_name %>さんの投稿

<%= comment.content %>
<%=link_

元記事を表示

GitLab開発依存ライブラリからthin gemを排除した

GitLab Advent Calendar 2022 25日目。

[thin](https://github.com/macournoyer/thin)という、”A small and fast Ruby web server” gemがある。`tnir` とも少し字面が似ている。

GitLabの開発が始まって1年ちょっとたったタイミングで当時、初代GitLab CTO(のちのFellowであり、1年ほど前からGitLab Inc.から離れている)dzaporozhetsにより開発用に導入されたgemである。

> dzaporozhets committed on Jan 19, 2013

– https://github.com/gitlabhq/gitlabhq/commit/54a24608a29d113f0c607027cddd8b6947c6a55c

## 何が問題か

GitLab開発用に作られたCLI `gdk` (GitLab Development Kit) というものがあるが、そこのサブコマンドに `thin` というコマンドがあった。ケースによるが一

元記事を表示

2022年の振り返り@Rails Girls

この記事は、[Rails Girls アドベントカレンダー2022](https://qiita.com/advent-calendar/2022/railsgirlsjapan) 最終日の記事です。
Ruby3.2、リリースされましたね。

今年は、Rails Girlsが日本で開催されて10周年(祝!)です。
といいつつ、このアドベントカレンダーでは、今年のRails Girlsに関する振り返りをざっくり書いていこうと思います。
(私にとっての10周年は来年なので、10年については来年にとっておこうかと・・・)

### いちおうねんのため自己紹介
– Rails Girls Nagoya 1st〜5th オーガナイザー
– Rails Girls JPメンバー
– Rails Girls Nagoya more!などに出没。
– クマ好き。特にくまモンが好き。
– 自作キーボード作ったり使ったり。

### 2022年のRails Girls振り返り
– オンサイトでのRails Girls開催!
– 鹿児島と東京で開催。COVID-19の感染が拡大している時期でもあった

元記事を表示

validates, 編集, 新規作成,<%=%>の使い方, postとget

データベースの値をバリデーションで制限する,文字数、重複防止、空欄防止ができる
validates

<%=%>の使い方

編集機能の作成手順
❶ユーザー編集ページの作成
❷変更の保存
❸サクセス時・エラー時の表示

postはsessionの値を変更したいときにも用いる

postとget
post 〇〇 get 〇〇
は異なるものとして扱われる
link_toを用いるとgetを探す
form_tagを用いるとpostを探す

今日の疑問
link_to 第三引数の{method:”post”}とは
いつ<%=%>を使い、<%%>を使うのか

元記事を表示

URLからOGPを取得してDBに保存する

# 概要
LINEでyoutubeやamazonのリンクを送信すると、そのサムネイル画像やタイトルを自動で表示してくますよね?
あれはOGPと言ってurlからそのページに設定されているタイトル、url、概要、画像などの情報を取得する仕組みを利用しています。
javascriptを使ってOGPを取得する記事はたくさんありますが、railsで取得した値をDBに保存するやり方が書かれた記事がなかったので、書いてみました!
## コントローラーとテーブル
コントローラーはpostsコントローラーでアクションはindex, new, create, showの4つ。
テーブルはpostsテーブルで、カラムは以下のようになります。

![db.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2988077/5dfdabf0-2c23-6116-61a9-fe2084f00f7e.jpeg)
図のようにbody, urlカラムは実際にユーザーが入力するためのカラム、
url_image, url

元記事を表示

JavaエンジニアがRubyを使ってみて思ったこと

# 前説
– 株式会社SUPER STUDIOの2022年Adventarの記事です。
– 7年ぐらいJava(Spring)を使っていたエンジニアが初めてRuby(Rails)を使ってみた所感のまとめです。
– JavaもRubyもどちらもまだまだ未熟者が書いた記事です。
– Javaの最新のバージョンもキャッチアップできてないのでちょっと知識が古いです。
– Javaの方がいいとか、Rubyの方がいいとか、対立煽りを助長するつもりはありません。
– 自分と同じでJavaばかり使ってきて、Rubyとかどんな感じなんかなあって思ってる人に読んでもらえたら幸いです。

# Ruby(Rails)を使い始めて思ったことまとめ
– 型宣言が必要ない
– メソッドの引数にデフォルト値を設定できる
– メソッドの戻り値の型の定義が必要ない
– 最終行の結果がreturnされる
– 後置ifが使える
– if文の戻り値が設定できる
– ActiveRecordが便利

1個ずつ見ていきます。

## 型宣言が必要ない
これは解説不要かと思いますが、Rubyは動的型付け言語ですので、Javaのような

元記事を表示

Railsで日時比較をする際に型が違って焦った話

# この記事で伝えたいこと

Railsで日時比較をするときには日付の型を確認しようと言う話をします。

# 日時に応じて挙動が変わる処理の実装

WEBアプリケーションを開発していると、特定期間のみキャンペーンのバナーを表示させたいというような、期間などの時刻で動作する機能を開発する必要があります。
かつての僕は「その時間になったら手動でデプロイするのかな」と思っていたこともあったのですが、コードの中に時間による分岐を入れれば自動で機能がアクティブになることを教えてもらいました。

そんな僕が書いたコードが下記のような分岐です。

“`ruby
Time.zone.now.between?(Date.new(2022, 12, 01), Date.new(2022, 12, 31))
“`

しかし、2022年12月1日0:00(JST)になってもこれではうまく動作しませんでした。

“`ruby
[2] pry(main)> Time.zone.now.between?(Date.new(2022, 12, 01), Date.new(2022, 12, 31))
=>

元記事を表示

カスタムマッチャーをカジュアルに書こう

## カスタムマッチャー書いてますか?
以前[こちらの記事](https://qiita.com/masaakiaoyagi/items/36ce6c88fa2b6deb95e0)で、`shared_examples`ではなくカスタムマッチャーで書いた方が読みやすいRSpecになると思うと書きました。
では、カスタムマッチャーはどう書いたらいいでしょうか?


### カスタムマッチャーの書き方
上の記事で例題として上げていた、以下のように書けるようにする`be_api_response_of`マッチャーを考えてみましょう。
“`ruby
it { expect(response).to be_api_response_of(401, “Unauthorized”) }

context “when logged in” do
include_context “logged in”

context “when page is 1” do
let(:page) { 1 }
it { expect(response).to be_api_response_

元記事を表示

フォロー・フォロワー数の非同期化

フォロー機能の非同期化完了後、ユーザー詳細ページにて、他ユーザーをフォロー(or解除)した際、リロードしなければフォロワー数が変化せず、躓きメンターさんに教えていただいたので、自分メモとして記事にいたしました。
(初心者であるため、専門用語の誤用や読みにくい記事となっているかもしれませんが悪しからず)

# 初めに
まず、私が勘違いしていたこととして、フォローボタンを押すとusers/show画面が変わるため、usersディレクトリにcreate.js.erbを作成したり、users/showに記述してある<%#= link_to @user.followers.count, user_followers_path(@user.id) %> にremote:trueを追記しなければいけないと思っておりました。

しかし、ターミナルのログを確認すると、フォローボタンを押すと、サーバにはRelationshipsコントローラのcreateアクションが送られておりました。

そのため、フォロー機能の非同期化の際に作成したrelationships/create.js.erbに後述する内容を追

元記事を表示

Sidekiq 7の新機能・変更点

## はじめに

Ruby on Rails (以下Rails) でバックグラウンドジョブを実行する際に一番よく使われているのGemである、Sidekiqのバージョン7.0(以下Sidekiq 7)が2022年10月にリリースされました。

このバージョンでは、管理画面へのメトリクスの追加、Pumaなどのプロセスへの埋め込み、キュー毎の同時実行数を制限するカプセルなど、以前よりも大きな機能追加が行われています。

本記事では、Sidekiqの公式サイトの記事や、GitHubの公式プロジェクトの内容を元に、Sidekiq 7の新機能や変更点の解説を行います。

## 注意点

### 本記事で取り扱うエディション

本記事ではGitHubで[公開しているOSS版](https://github.com/mperham/sidekiq)のSidekiqについて記述しています。Pro / Enterprise版を使用している場合は、[公式サイト(英語)](https://sidekiq.org/)を参考にしてください。

### サポートされるRails / Ruby / Redisのバージ

元記事を表示

1年で5社を経験して学んだ駆け出しエンジニアが実務の中で生き残っていく方法

この記事は[RUNTEQ Advent Calendar 2022](https://qiita.com/advent-calendar/2022/runteq)の25日目、最終日の記事です。

2021年12月にRUNTEQを卒業しました。そして、2021年12月からWebエンジニアとしての実務をスタートしてからちょうど1年になります。

この記事では、業務委託で3社、契約社員で1社、正社員で1社(現在)という形で、5社でお仕事をさせてもらう中で学んだ、駆け出しエンジニアが実務の中で生き残っていく方法について書きたいと思います。

その中で、エンジニアとしての仕事を得る上で大層な個人開発アプリ(いわゆるポートフォリオ)は必要ないし、最低限の技術力さえあれば仕事はできるということも同時にお伝えできたらと思っています。
未経験からの転職はハードルが高すぎると感じて挫折してしまう人を少しでも減らすことができたら幸いです。

## なぜ最低限の技術力でいいのか
まず、最低限の技術力をざっくり定義すると、「不明点をググったり、先輩に質問することで、問題解決ができる状態」とします。適切に調査する

元記事を表示

Rails関係記事 リスト一覧[自分の記事のまとめ]

環境構築

      ・[本番環境用のgemを開発環境にインストールしたくない時の対処法](https://qiita.com/Ktsuki16/items/4cee16e285aa842dfd3e)

      ・[rails開発でincompatible library versionが出た時の対処法](https://qiita.com/Ktsuki16/items/4b0290bac7d0499c65cf)

      ・[環境変数の設定に困ったときに読むべき記事[備忘録]](https://qiita.com/Ktsuki16/items/7a95ce679a2ee67ece94)

      ・[nodenvライブラリをインストールしたはずなのに、nodenvコマンドが使えなかったので解決してみた。[パスを通せば解決。]](https://qiita.com/Ktsuki16/items/8e594c015ea4c4d37e6b)

      ・[rbenv localでru

元記事を表示

SET1年目の新卒が、ヒィヒィ言いながら社内の自動テストツールを改善した話

# はじめに
22年度新卒で株式会社LIFULLに入社した[Yamashita-Taiki](https://qiita.com/Yamashita-Taiki)です。

最近35インチのモニターを導入して仕事の質が爆上がりです(してますよね???)

今回は内製OSSの自動テストフレームワークであるBucky-core、その結果レポートを担当しているBucky-managementのUIを改善したので、そこで学んだことを書いていこうと思います。
Bucky-coreやBucky-managementについては以前社員の方が詳細について投稿してくださっているので[その記事](https://qiita.com/rueyjye/items/570ce17d698819f99091)を見ていただければと思います。

# 今回挑戦したこと
実行されたテスト結果を表示するページのUIを改善しました。
まずbeforeとafterの画像を添付します↓

## before(実際には30件並んでいます)
![スクリーンショット 2022-12-22 17.33.03.png](https://q

元記事を表示

OTHERカテゴリの最新記事