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

Ruby関連のことを調べてみた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

元記事を表示

ruby 練習問題44 (アウトプット用)

times文を使って、以下のようにターミナルに出力されるプログラムを書く問題。
“`
1回目の繰り返し
2回目の繰り返し
3回目の繰り返し
4回目の繰り返し
5回目の繰り返し
6回目の繰り返し
7回目の繰り返し
8回目の繰り返し
9回目の繰り返し
10回目の繰り返し
“`
以下、模範解答
“`ruby
10.times do |i|
puts “#{i + 1}回目の繰り返し
end
“`
以下、解説
times文を使い、puts “○回目の繰り返し”という処理を繰り返し行う。
今回は○回目の○の部分に数字を1ずつ足していかなければいけないので変数を使用する。(今回は変数iとする。)
プログラムなので、1回目の繰り返しではiは0になるので(i + 1)回目の繰り返しとすれば1となる。

元記事を表示

【Ruby】モジュールの名前空間を深掘りするースコープとグローバル名前空間ー

Moduleの名前空間について簡単にまとめます。
書籍中心に勉強していますので、ご指摘あればコメントお願いいたします。

# 名前空間とは
Moduleを使用して、クラスなどの定義した定数が一意になるようにするための手段です。

開発を進めていくと、他のファイルにあるクラス名を重複するなどの問題が起こる。これを解決する手段として用いられます。

# 定義の仕方

定義したクラス名にmoduleをネストして使用します。

“`ruby
module Bar
class Foo
def say
“hello”
end
end
end

foo = Bar::Foo.new
foo.say #=> “hello”
“`
呼び出す場合は`モジュール名::クラス名`の形を取ります。
ここで、インスタンスを作るときに、`Foo.new`だけの形で定義するとエラーが出力されるので注意しましょう。

# 使用する場面

名前空間を使用する時はプロジェクトのディレクトリ構造に名前空間を合わせます。
上のクラスはBarディレクトリ

元記事を表示

引数のデフォルト値について(Ruby)

  

1、メソッド定義のところで、引数にデフォルト値を指定できる。引数の呼び出しで、引数を省略した場合、デフォルト値が適用される。

“`
def introduce(name = “山田”) # 山田がデフォルト値
puts “私は#{name}です。”
end

introduce(“島田”)
introduce()
“`
出力結果
“`
私は島田です。
私は山田です。
“`
2、引数呼び出して、末尾がハッシュの場合、波カッコ{ }を省略可能。

“`
def introduce(name = “山田”, msg)
puts “私は#{name}です。”
puts “#{msg[:target]}、#{msg[:greeting]}。”
end
introduce(“島田”, {target: “世界の皆さん”, greeting: “こんにちは”})

# { }を省略している
introduce(“島田”, target: “世界の皆さん”, greeting: “こんにちは”)

# デフォルトの値(“山田”)で出力するのでn

元記事を表示

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ファイルから

元記事を表示

サンプルコードでわかる!Ruby 3.2の主な新機能と変更点

## はじめに

Rubyは毎年12月25日にアップデートされます。
Ruby 3.2は2022年12月25日に3.2.0が正式リリースされました。

https://www.ruby-lang.org/ja/news/2022/12/25/ruby-3-2-0-released/

この記事ではRuby 3.2で導入される変更点や新機能について、サンプルコード付きでできるだけわかりやすく紹介していきます。

ただし、すべての変更点を網羅しているわけではありません。個人的に「Railsアプリケーションの開発時に役立ちそうだな」と思った内容をピックアップしています。本記事で紹介していない変更点も多数ありますので、以下のような情報源もぜひチェックしてみてください。

https://www.ruby-lang.org/ja/news/2022/12/25/ruby-3-2-0-released/

https://techlife.cookpad.com/entry/2022/12/26/121950

https://qiita.com/advent-calendar/2022/ruby

元記事を表示

Map・ハッシュ操作 【Java】【Kotlin】【Ruby】

# 概要
自主学習のアウトプットです。

現場でJavaのMapを操作していた時に、自分の書いたコードがまわりくどいやり方かなと思って調べたらいい方法を見つけたので備忘録です。(実際は周辺のコードと合わなくて使えませんでしたが。。)

学習中のKotlinとRubyで同じことするには?と調べたものも共有します。

# まわりくどいやり方
コードを書いてふと思いました。

「なんやこれ、まわりくど」

思わず声に出てしまったコードがこちら

“`Java:Java
Map pokemons = new HashMap();
pokemons.put(“Pikachu”, “ピカチュウ”);
pokemons.put(“Lapras”, “ラプラス”);
pokemons.put(“Snorlax”, “カビゴン”);
pokemons.put(“Venusaur”, “フシギバナ”);
pokemons.put(“Charizard”, “リザードン”);
pokemons.put(“Blastoise”, “カメックス”

元記事を表示

JITコンパイルをサポートした新たなRuby処理系をRustとアセンブリで書いている話

この記事は[言語実装 Advent Calendar 2022](https://qiita.com/advent-calendar/2022/lang_dev) の24日目の記事です。

## はじめに

 monochromeです。今回はmonorubyという名前の高速なRuby処理系の紹介をします。

 ここ何年か、わたしはruruby[^ruruby]というRubyのインタプリタをRustで書いていて、Advent Calendarでもいくつか紹介記事を書きました。

[^ruruby]:https://github.com/sisshiki1969/ruruby

– [Rustでつくる(つくれるかもしれない)Ruby](https://qiita.com/sisshiki1969/items/3d25aa81a376eee2e7c2)
– [ruruby: RustでつくっているRuby](https://qiita.com/sisshiki1969/items/4d76e69545ca1c26ed48)
– [Ruby処理系自作入門](https://qiita.com

元記事を表示

selfの使い方

インスタンスメソッドの中では「self」を用いて、「self.変数名」
前提として
インスタンス=>クラスで作られた設計図を基に作られたも
インスタンスメソッド=>クラス内で定義されたメソッド(インスタンスに対して呼ばれるからインスタンスメソッドと呼ばれる。)

selfを用いる場合
selfには呼び出したインスタンスが代入されている

元記事を表示

LINEWORKSの特定ルームにメッセージを送る方法(API 2.0対応のRuby版)

# ゴール

Rubyのコードから実行すると、LINEWORKSに登録されたボットが、指定されたルームに任意のメッセージを送ることができます。
![スクリーンショット 2022-12-25 0.44.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/524261/ef04c309-455a-f148-d6a0-66ab010dbbe0.png)

# メッセージの送信 – トークルーム指定
LINEWORKS Developersで調べると、以下のAPIを呼び出す必要があるようです。
https://developers.worksmobile.com/jp/reference/bot-channel-message-send?lang=ja
![image (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/524261/a58a2fcb-88a4-af9b-3bb9-46cf2148166a.png)
具体的なH

元記事を表示

【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` というコマンドがあった。ケースによるが一

元記事を表示

【Rsepc】実行時間が長いテストを抽出する

# profileオプション
テストケースごとの実行時間がわかり、時間がかかっているテストを抽出することができる。

`$ bundle exec rspec –profile`で実行時間がかかっているテストケースとその実行時間の上位10個が出力される。
デフォルトで10件表示されるようになっているので、
`$ bundle exec rspec –profile 20`と指定して上げると、上位20個が表示される

# ディレクトリごとに分けて実行するのが良い
すべてのテストコードを実行するのだと、大きなアプリケーションだと時間かかるので、ディレクトリごとに確認した方が良い。
“`ruby
ex)
bundle exec rspec –profile 20 spec/controllers/
bundle exec rspec –profile 20 spec/models/

# 1つのテストケースの時間も確認できる
ex)
bundle exec rspec –profile 10 spec/models/user/user_spec.rb:40
“`

元記事を表示

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_

元記事を表示

OTHERカテゴリの最新記事