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

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

Railsで環境変数が読み込まれない? .envファイルのトラブルシューティングと解決方法

## Railsで環境変数が読み込まれない? `.env`ファイルのトラブルシューティングと解決方法

### 目次
1. [背景](#背景)
2. [コントローラーでの環境変数の利用](#1-コントローラーでの環境変数の利用)
3. [私が試したトラブルシューティング手順](#2-私が試したトラブルシューティング手順)
– [Railsコンソールで環境変数を確認](#railsコンソールで環境変数を確認)
– [APIキーの有効性を確認](#apiキーの有効性を確認)
– [現在のRails環境が`dotenv`を反映する設定になっているか確認](#現在のrails環境がdotenvを反映する設定になっているか確認)
– [Gem ‘dotenv-rails’がインストールされているか確認](#gem-dotenv-railsがインストールされているか確認)
– [サーバーの再起動を試行](#サーバーの再起動を試行)
4. [解決策:サーバーの再起動](#3-解決策サーバーの再起動)

### 背景

Railsアプリケーションの開発中、コント

元記事を表示

【paizaCランク】大きな数値を 3 けたごとにカンマ区切りで出力

Ruby学習のためにpaizaで問題集やスキルチェックをしています。

Dランクを飛ばしてCランクの問題集を挑戦し始めました。

標準出力メニューの問題集「大きな数値を 3 けたごとにカンマ区切りで出力」を解いて学んだこと、理解できていなかったことなど学習備忘録で記載していこうと思います。

## 問題
標準入力で与えられた数値を3桁ごとにカンマで区切って出力するという問題。

入力例
123456789

期待する出力
123,456,789

https://paiza.jp/works/mondai/stdout_primer/stdout_primer__specific_split_step6

## 自分が書いたコード
“`
ary = gets.chomp.split(“”)
count = ary.size

i = 1

while i < count do print ary[i-1].to_i if i%3==0 print "," end i = i + 1 end print ary[i-1].to_i ``

元記事を表示

Railsのparamsとは

# paramsとは
paramsとは**リクエスト**が発生した際にroutes、Controllerに渡されるパラメータ。

`params[:id]`などで、Viewからroutesを通り、Controller側に渡される。
なお、`config/routes.rb`では、このように書かれている。
“`
get ‘users/:id/articles’, to: ‘articles#show’, as: ‘user_articles’
“`
これの`:id`がそう。
Controllerには`params[:id]`と書いてidを取得できる。

# リクエストとは
リクエストはクライアント側がサーバー側に何かこれがほしいと要求をしサーバー側がそれに対してレスポンスをするときに発生しているあれ。

レスポンスをするということはクライアントが**何のリソースが欲しいか**を特定する必要がある。
なので、クライアント側が特定をするための最低限の情報を渡さなければならない。

最低限の情報とは、例えばデータベースで言うとidだったり、user_idだったり。

idさえあれば、データ

元記事を表示

RubyXLでExcelファイルを読み取る時ハマったこと

# TL;DR

“`rb
workbook = RubyXL::Parser.parse_buffer(buffer)
workbook.stream
“`

上記コードは`Stream`とか書いていますが、巨大TEXTファイルを読み取る時みたいに、一行ずつ読んで性能アップすることはないので、かえって遅くなります。
こちらのメソッドは単にWebサーバーに送信されたExcelファイルを、ファイルハンドラーのままで処理可能にして、明示的に一時ファイルを保存しなくて済むように作られています。

オーソドックスな`workbook = RubyXL::Parser.parse(“path/to/Excel/file.xlsx”)`の方が断然早いですが、そもそもRubyXLやPythonのOpenPyXLのようなサードパーティーモジュールは巨大Excelファイルに不向きです。

巨大Excelファイルをプログラム的に処理するには、現段階Excelの中にVBAを書くしかないと思います。

# 実験
## 巨大Excelの作成

“`rb
require ‘benchmark’
requir

元記事を表示

RailsでJavascriptを使用して動的セレクトフォームの作成

# はじめに

現在友人依頼の作付計画アプリケーションの作成中です
今回はJavascriptを使用して動的なセレクトフォームを作成したので
アウトプットします✍️

間違えているところ等ございましたら、ご指摘いただけますと幸いです🙇

# 完成図
畑名を選択すると、畑名に関連付けられた区画名が出てくるようにしています!

[![Image from Gyazo](https://i.gyazo.com/83145a3b2e1498d16452466f0721c0c9.gif)](https://gyazo.com/83145a3b2e1498d16452466f0721c0c9)

イメージ的には都道府県がわかりやすく、都道府県=畑 市町村=区画 作付計画はプロフィールの出身地といったところです!下記の記事が大変分かり易かったです!

# ER図

erbの<% %>を楽に入力する【VSCode】

# はじめに
`erb`を使う時、`<% %>`や`<%= %>`の入力が手間ですので、解消します。
# 環境
| | |
|:-:|:-:|
| エディタ | VSCode |
| 言語 | erb(html系 拡張子 なら応用可能)|
| | |
# やりたいこと
“Emmet”のように、shorthandで`<%%>`を呼び出せるようにします。

“Emmet”についてはこちら

https://qiita.com/kohki_takatama/items/ec0bec86277bf90f94eb

# 実装手順
VSCodeで行ってください。
| `ctrl + shift + P`で設定を開く | snippetを検索し、開く |
|:-:|:-:|
|![スクリーンショット 2024-08-22 13.01.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457770/91cc29e4-749d-2821-1bb2-9c06aacbeefa.png)|![スクリーンショット

元記事を表示

慣れないデザインパターンを導入して失敗した話

# 概要
– 筆者が興味本位で使いたくなったデザインパターンを稼働中のプロダクトに導入してみた
– 導入して約1年後、当該プログラムは存在しているが、同じデザインパターンが他のチームメンバーに使われることがなく、プロダクトコードの中でひとつだけ浮いた状態になった
– 振り返ってみると、あまり分かりやすくなくて、書いた本人でさえも書き直したくなってしまった

という話です。

# 発端
某金融システムのバックエンド開発を行なっています。プロダクトコードはRailsで書かれています。
筆者宛ての仕事として、ユーザーからのリクエストをControllerで受け取り、もろもろバリデーションチェックの後、テーブルAのレコードを更新、テーブルB、テーブルCのレコードをそれぞれ1件づつ追加したい、という要件の実装を担当することになりました。
考えられる実装パターンは以下のようなものでした。

#### 選択肢1: そのままControllerに書く
“`ruby
class HogeController < ApplicationController def create # もろもろ

元記事を表示

RubyMine 2024.2 がリリースされました!

## 皆さん、こんにちは!

新しいバージョンの RubyMine が利用可能になったことをお知らせします。弊社の[ウェブサイト](https://www.jetbrains.com/ruby/download) や無料の [Toolbox App](https://www.jetbrains.com/toolbox-app/)、あるいは Ubuntu 用の [snaps](https://snapcraft.io/rubymine) からダウンロードできます。

RubyMine 2024.2 からは、IDE を中国語、韓国語、日本語で使用する場合に言語サポートプラグインをインストールする必要がなくなります。これらの言語パッケージが IDE に最初から同梱されるようになりました。

もう一つの大きな改善点は、新しいUIがRubyMine 2024.2でデフォルトになったことです。詳細は[専用のブログ記事](https://blog.jetbrains.com/blog/2024/07/08/the-new-ui-becomes-the-default-in-2024-2/)をご覧くだ

元記事を表示

【ABC367】D – Pedometer のイメージベース解説

## 目的
[AtCoder公式の解説](https://atcoder.jp/contests/abc367/editorial)を見てもテキストベースでの説明で解き方の理屈がわからなかったが、[Xでポストされた画像](https://x.com/supu_hapi/status/1824907933676921288)を見て解き方の理屈がわかったので、自分と同じように解き方の理屈がわからない人向けにイメージベースで解説

## 問題
https://atcoder.jp/contests/abc367/tasks/abc367_d
各休憩所を時計回りでMの倍数となる歩数の組み合わせの数を求める
![円環図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3861065/03e28ea4-4612-f5fa-a43e-c909a1d6fe9c.png)
入力例1(M=3)の答えは、

– 休憩所1から休憩所3までの3歩(2+1)
– 休憩所3から休憩所2までの9歩(4+3+2)
– 休憩所4から休憩所1

元記事を表示

NoMethodError: undefined method `chrome’ for Selenium::WebDriver::Remote::Capabilities:Class ってなエラーが出た場合

6.1のサポートがぁぁぁあということで、7.0へ引っ越し作業中に

“`
NoMethodError: undefined method `chrome’ for Selenium::WebDriver::Remote::Capabilities:Class
“`

ってエラーが発生

“`
Capybara.register_driver :chrome_as_pc do |app|
caps = Selenium::WebDriver::Remote::Capabilities.chrome(
loggingPrefs: { browser: “ALL” },
chromeOptions: {
w3c: false,
args: [
“no-sandbox”,
“headless”,
“disable-gpu”,
“window-size=1200,800”,
“user-agent=Mozilla/5.0 (Windows NT 5.1) Apple

元記事を表示

生年月日から年齢を計算する方法を各プログラミング言語で書いてみた

# はじめに

プログラミングでよくあるタスクの一つに、生年月日から年齢を計算することがあります。今回は、各プログラミング言語でこのタスクを1行で実装してみました。どの言語でも、標準ライブラリを活用すれば簡単に計算できます。

## Python
“`python
age = (datetime.datetime.now() – datetime.datetime(1984, 8, 21)).days // 365
“`
Pythonでは、`datetime`モジュールを使い、現在の日付と生年月日との差を日数で計算し、年数に換算しています。

## JavaScript
“`javascript
const age = Math.floor((new Date() – new Date(‘1984-08-21’)) / (365.25 * 24 * 60 * 60 * 1000));
“`
JavaScriptでは、`Date`オブジェクトを利用して、生年月日と現在の日付の差をミリ秒で計算し、年数に換算しています。

===
ミリ秒意識しない記載方法は以下(推奨)
“`ja

元記事を表示

Ruby Gold模擬試験アプリを作成しました!

# Ruby Gold模擬試験アプリを作成しました!

## はじめに

こんにちは!Rubyが大好きで、将来は日本でRubyエンジニアとして働くことを夢見ている者です。現在、就職活動を進めていますが、自分のRubyへの情熱を言葉だけでなく行動で示したいと考えました。

## Ruby Gold試験への挑戦

そこで、Ruby技術者認定試験(Gold)の受験を考えました。しかし、調べてみると、この試験は日本国内での対面試験のみだということがわかりました。現在中国に住んでいる私にとって、これは大きな壁でした。

## オープンソースの模擬試験リソース

幸いなことに、GitHubで素晴らしいリソースを見つけました。Ruby Associationが公開している[模擬試験問題](https://github.com/ruby-association/prep-test/blob/version3/gold_ja.md)です。これは本当に助かりました!

## Webアプリケーションへの発展

模擬試験問題を解いていくうちに、ふと思いつきました。「これをWebアプリケーションにしたら、世界中

元記事を表示

本番環境でRailsコンソールを開くコマンド

いつも忘れて30分ほど時間を浪費するので備忘録
しかもちょっと違うと全然開けないのが結構きつい。

# 本番環境でRailsコンソールを開く
“`
RAILS_ENV=production bundle exec rails c
“`

## RAILS_ENVは前
`RAILS_ENV=production`はどちらにせよ末尾につけるのではなく、前につける

## rails ではなくて bundle exec rails
`rails c`で開こうとしても開けない。
`bundle exec rails c`を使い開く。

元記事を表示

filter_map.with_index、君に決めた

## 知りたかったこと

filterは配列などの条件に合致する要素を新たな配列として返してくれる。例えば次は機能する。

“`ruby
ary = [1,10,6,3,7,2,5,4]
p ary.filter { _1 > 4 }
#=> [10,6,7,5]
“`

しかし、以下の場合はどうするだろうか。
– 配列の合致する要素に対してのみ、**その要素に演算を行なった値**を返して欲しい
– 配列の合致する要素の**インデックスが全て**欲しい

要は、Pythonのif節を備えた内包表記と同じことがしたいのである。

## いにしえの解決法
これを解決するには
map{if文}.compactを使いましょう、というのが調べると出てくる。要らない要素はif文でnilにし、最後にcompactで取り除くという算段だ。

“`ruby
ary = [1,10,6,3,7,2,5,4]
p ary.map { _1 * 2 if _1 > 4 }.compact
#=> [20,12,14,10]
p ary.map.with_index {|value, index| ind

元記事を表示

文字列を圧縮・展開する/バイナリ文字列を 16 進数文字列に変換する

# この記事は?

Ruby で以下を行う方法を備忘録として残します ✍️

– 文字列を [zlib](https://docs.ruby-lang.org/ja/latest/library/zlib.html) で圧縮・展開する。
– バイナリ文字列を 16 進数文字列に、あるいは16 進数文字列をバイナリ文字列に変換する。

# 方法

“`rb
require ‘zlib’

string = ‘ヨーヨー振りたい 🪀’

# 文字列を圧縮 → バイナリ文字列 → 16 進数文字列
binary_string = Zlib::Deflate.deflate(string, Zlib::BEST_COMPRESSION)
#=> “x\xDA{\xDC\xBC\xE2q\xF3\x9E\xC7`\xF2Y\xCF\xFA\xC7M]\x8F\e\xE7?nlQ\xF80\x7FU\x03\x00+q\x135”
hex_string = binary_string.unpack1(‘H*’)
#=> “78da7bdcbce271f39ec760f259cffac74d5d8f

元記事を表示

[個人開発・本リリース] 完全未経験が冷蔵庫の中身を簡単管理できるサービスをリリースした件

## はじめに

こんにちは。ryosuke([@ryousuke_mogurA](https://x.com/ryousuke_mogurA))と申します。現在プログラミングスクール RUNTEQ にて、Ruby on Rails を学習しています。

前回MVPリリースしたアプリを本リリースしたので新たな記事を書くことにしました。
技術的な部分での誤りやサービスについての感想などありましたら、コメント等で教えていただけると助かります。
## 目次
[1.作成したサービスの紹介](#サービスの紹介)
[2.作成した経緯](#作成した経緯)
[3.技術スタック](#技術スタック)
[4.こだわったポイント](#こだわったポイント)
[5.画面紹介](#画面紹介)
[6.ER図](#ER図)
[7.実装機能](#実装機能)
[8.今後の展開](#今後の展開)
[9.反省点](#反省点)
[10.感想](#感想)

## サービスの紹介
[![Image from Gyazo](https://i.gyazo.com/385a7078b695448cfef79567d7cd142b.jpg

元記事を表示

LMDBでnosyncすると速くなった

## 背景
Kontur Population PMTiles ([optgeo/kpop-pmtiles](https://github.com/optgeo/kpop-pmtiles))というプロダクトを作りにあたって、[H3](https://h3geo.org/#)のresolutionを変えながらデータベースに値を記録していくということを行いました。

## わかったこと
[過去の経験](https://qiita.com/hfu/items/a23d8e5168d710490f5b)から、LMDBを使っていたのですが、LMDB.newする際に `:nosync => true` を付加すると高速になることがわかりました。

“`ruby
require ‘lmdb’

$env = LMDB.new(‘db’,
:nosync => true, :nometasync => true,
:writemap => true, :mapasync => true,
:mapsize => 5000 * 1024 * 1024 * 1024
)
$db = $

元記事を表示

【Rails】button_to_functionが使用できない

## はじめに
Railsのアップデート中にbutton_to_functionを使用している箇所でエラーが出たので、その対応をまとめます。

## 問題
以下のように、button_to_functionを使用するとエラーがでます。
“`ruby
<%= button_to_function "ボタン", "clickButton()", {:class=> “button”} %>
“`

## 解決方法
button_to_functionはRails4.1で削除されました。
javascriptなどでボタンをクリックしたときのコードを実装します。
“`ruby
ボタン

$(document).ready(function() {
$(“#button”).click(function() {
clickButton();
});
})
“`

## 参考
https://www.techscore.com/tech/Ruby/rails-4.0/view/

元記事を表示

Shift_JISに変換する際に『 〜 』が化けちゃう【波ダッシュ・全角チルダ問題】

## 解決策
文字列をShift_JISに変換する際 “~”が消える事例に遭遇した人へ
下記のコードを付けよう

~~~ ruby
# 全角チルダを波ダッシュに変換
.gsub(‘~’, ‘〜’)
~~~

## 原因
上のインライン部分に書いてあるとおり、実は”**~**”と”**〜**”は違う文字

全角チルダ ” **~** “はShift_JISにエンコードする際バグってしまうみたい

https://www.tohoho-web.com/ex/dash-tilde.html

元記事を表示

【O’Reilly】初めての自動テスト読んでみた。

# 初めに

個人的な都合で自動テストに詳しくならないといけないので今回の本を読んでみました。

www.amazon.co.jp/dp/4873118166

# 簡単にこの本ってどんなものなの?

Rubyを通して自動テストの初歩について解説しています。

テスター視点で自動テストの特徴や簡単な設計運用、単体・結合・E2E、TDDについて解説しています。

# どんな人が読むべきだと思う?

以下の人が読むべきだと思います。

– 自動テストに振れたことない・触れたばかりのテスターや開発者
– 自動テストにおける単体・結合・E2Eを簡単に知りたい人
– Rubyの自動テストを勉強したい人

逆に読まなくていい人はこんな感じです。

– 実践的な自動テストの設計運用を知りたい人
– JSTQBの試験対策
– 自動テストにおける単体・結合・E2Eを簡単に分かっている人
– Rubyにアレルギーを感じる人
– SPAやSSRのテストアプローチを知りたい人
– 手動・自動テスト関係ない汎用的なテストについて知りたい人
– 現在と2017年の違いを把握できない人

# 本の内容について詳細解

元記事を表示

OTHERカテゴリの最新記事