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

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

M1 Mac (macOS Monterey) で therubyracer のインストールすることはできるのだろうか?

# 結論
いろいろ試したけど今のところ問題なく使えるようにする方法が見つかりません……。

# インストール手順について
`therubyracer` のインストールには `libv8` のインストールが必要で、`libv8` のインストールには `v8` が必要です。

つまり、`v8` ← `libv8` ← `therubyracer` という依存関係になっています。

# v8
なのでまずは Homebrew で v8 をインストールしようとしてみます。

“`shell:Shell
brew install v8@3.15
“`

すると以下のエラーが発生します。

“`
Error: Cannot install under Rosetta 2 in ARM default prefix (/opt/homebrew)!
“`

M1 Mac では v8 はインストールできないようです。

幸い、M1 Mac にはこうした互換性の問題を解消するため、Rosetta 2 という仕組みがあります。これを利用することで Intel でしか動作しないアプリケーション

元記事を表示

M1 Mac (macOS Monterey) で Ruby のインストールに失敗するときの対処法

# 解決方法
M1 Mac で従来どおりに Ruby をインストールしようとするとビルドエラーが出てしまいます。

筆者の環境では以下のコマンドを実行することにより無事インストールすることができました。

“`shell:Shell
brew install openssl@1.1 readline libyaml

export RUBY_CONFIGURE_OPTS=”–with-openssl-dir=$(brew –prefix openssl@1.1)”
export LDFLAGS=”-L/opt/homebrew/opt/readline/lib”
export CPPFLAGS=”-I/opt/homebrew/opt/readline/include”
export PKG_CONFIG_PATH=”/opt/homebrew/opt/readline/lib/pkgconfig”
export optflags=”-Wno-error=implicit-function-declaration”
export LDFLAGS=”-L/opt/homebrew/

元記事を表示

【Rails】database.ymlにMySQLのパスワードを設定する方法

# はじめに
今回は、Mysqlのパスワードを変更したことにより、発生したエラーの解消方法についてまとめました。

※おことわり※
基本的に学習内容のアウトプットです。
初学者であるため、間違い等あればご指摘いただけますと嬉しいです。

# この記事の目的
以下内容のアウトプット
– Mysqlのエラーとその解消方法
– database.ymlにMySQLのパスワードを設定する方法

# 開発環境
– Ruby 2.6.5
– Ruby on Rails 6.0.0
– MySQL 14.14

# この記事の内容
1. Mysqlのエラー
2. Mysqlのパスワードを確認
3. database.ymlにMySQLのパスワードを設定

# 1. Mysqlのエラーの概要
Mysqlのパスワードを設定(変更)したことにより、ローカルでサーバを立ち上げた際にエラーが発生しました。

※エラー解消のプロセスでNOとYESのエラーに遭遇しましたが、最終的にエラー解消できました。
“`
Mysql2::Error::ConnectionError: Access denied for u

元記事を表示

RuboCop Rails (rubocop-rails) のリリース内容で Rails の情報をキャッチアップする

# この記事は?

Ruby の静的コード解析の定番 Gem の [RuboCop](https://github.com/rubocop/rubocop)。そのひとつひとつのルールのことを Cop と呼びます。そして、[RuboCop Rails](https://github.com/rubocop/rubocop-rails) は Rails 向けのルールを RuboCop に追加するための Gem です。

ふと、RuboCop Rails で追加された Cop (ルール) を確認することで、Rails の知らない機能を知るいい機会になるのではと思いました。そこで、試しに 2022/09/09 (金) にリリースされたバージョン 2.16.0 の内容を見てみました :eyes:

https://github.com/rubocop/rubocop-rails/releases/tag/v2.16.0

そうすると、案の定知らないことばかりで非常に勉強になりました!そこで、実際にどんな学びがあったかこの記事で共有したいと思います 🙌

# 例: RuboCop Rails 2

元記事を表示

【初個人開発】K P T管理アプリ「Animal KPT」を作りました。

# はじめに
こんにちは [@Taiga_aniK](https://twitter.com/home)と申します。

みなさんKPTはされたことはありますか。
KPT(ケプト) :Keep(できた/継続すること) Problem(改善するべき問題点) Try(挑戦したいこと)の3要素を掘り下げ、学習や仕事を改善できるアクションを導き出すツールです。

Animal KPT では、達成度を色で別け、「振り返り」をより確実にします。ツイッターと一緒に使えます。

【Twitter】

【今回作ったアプリ】
https://obscure-chamber-30165.herokuapp.com/tops/index
【GitHub】
https://github.com/tai9174/animal_kpt

# 使用環境

• Ruby 3.0.1
• Rails 6.0.3

# アプリの主な機能
### トップ画面
トップ画面のホワイトタイガーは丹精を込めて描きました。
Animal KPTという名前は、デザインに動物を

元記事を表示

Rails nil?とempty?とblank?メソッドの違い?・・・わかってます・・・

# はじめに
実務でコードを書いているときに次の3つの違いを先輩に問われたことがありました。
– nil?
– empty?
– blank?

どれもレシーバに値ががない状態?であることを確認するときに使っていました。
私自身よく考えずに使っていたので詳しく調べてみることにしましたので備忘録として残します。
間違いや補足がありましたら教えてください。

# 環境
Ruby 2.7.1
Rails 6.0.5

# 3つの違いとは
### nil?
Rubyのドキュメントによると次の通りです。
>レシーバが nil であれば真を返します。

~~レシーバ自体が存在しない場合~~、つまりnilであればtrueを返します。

※追記
>nil は何かが存在しないことを表すために用いられるオブジェクトです。

レシーバが存在しないということはあり得ないというご指摘をいただきましたので追記です。

https://qiita.com/scivola/items/da2480ca4597a7dcf73d

### empty?
Rubyのドキュメントによると次の通りです。
>文字列が空 (

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlのスコープの比較

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,Perlのスコープの比較

# Python

https://qiita.com/msssgur/items/12992fc816e6adf32cff

# Ruby

https://qiita.com/EZ_Denta/items/6489039212e21d4fc49f

# PHP

https://qiita.com/hikaru_/items/4cc7b616aa61868cdcdd

# Java

https://qiita.com/gatchan03/items/e8eecf468b7dab960198

# JavaScript

https://qiita.com/higa02/items/a7a0a1d96d1d67a7c88b

# Perl

https://perlzemi.com/blog/2011012

元記事を表示

tsunagi-functionsでSymbolブロックチェーンのトランザクションを自由自在に作ろう!(Ruby編)

この記事は、以下に紹介したtsunagi-functionsのRuby実装版です。

https://qiita.com/nem_takanobu/items/4b5d67fe9eb80ae35433

トランザクション構築の内部処理やノードへの通知方法については以下の記事もご参考ください。

https://qiita.com/nem_takanobu/items/2cff7bd2722aa86fec84

Symbolブロックチェーンをよく知らないという方はこちらで速習することができます。

https://github.com/xembook/quick_learning_symbol

# リポジトリ

##### tsunagi-functions for Ruby
https://github.com/xembook/tsunagi-sdk/tree/main/ruby

関数群の提供のため、sdkという名称は今後functionsに変更予定です。

# テスト

テストスクリプトを以下に置いています。実行することができればそのロジックをそのまま実装に利用することができます

元記事を表示

【Rails】【Ruby】find_by_sql でも preload したいとき

# はじめに
`find_by_sql` を使って複雑なSQL文を書いたが、N+1を避けるために `preload`したい時がある。

# 結論
下記のように書けばOK
“`ruby
records = User.find_by_sql(…)
ActiveRecord::Associations::Preloader.new.preload(records, :like)
“`

下記は`preload`が無視されるのでダメ
“`ruby
User.preload(:like).find_by_sql(…)
“`

# 注意点
**Rails7 で記法が下記のように変わる**
“`ruby
records = User.find_by_sql(…)
ActiveRecord::Associations::Preloader.new(records: records, associations: :like).call
“`

# 参考
https://www.natsuneko.blog/entry/2017/04/18/find_by_sql-preload

元記事を表示

[Rails] 複数の小モデルを跨いだor検索

バージョンの問題で5.1.以下の複数の小モデルを使ったor検索の実装方法があまり載っていなく少しでも役に立つかもと思ったので投稿します。
もっと良い書き方があれば教えていただきたいです。

## 学んだこと
・includeを使うと小モデルのオブジェクトを親クラス内から使えるということを学びました。
“`
Child.include(:parent).is_summer_vacation
“`
・idを使ってor検索を実装すること(rails5.2からは.[or()](https://qiita.com/YumaInaura/items/c4ea8271f5793962a26d)を使っていけるかも)
## 環境
Rails 5.1.6.2
Ruby 2.5.0

### DB
“`book.rb
has_one: business #ビジネス書
has_one: novel #小説
has_one: comic #漫画
“`

### 複数の小モデルを跨いだor検索
本の検索サービスにおいてアメトークで紹介された本を絞り出すという状況を想定して実装コードを紹介します。
“`

元記事を表示

Rails 7 + ImportmapでFont Awesomeを実装する

# FontAwesome
アイコンを使うのに[FontAwesome](https://fontawesome.com/)というライブラリーはすごくいいだけど、インストールするには公式サイトにこれしか書いてなかったからインストールに詰まりました。
“`shell
# npm
npm install –save @fortawesome/fontawesome-free

# yarn
yarn add @fortawesome/fontawesome-free
“`

これだけだとアイコンは表示されないし、フレームワークごとのインストール方法は書いてなかったからちょっと調べてみたら、YouTubeの[この動画](https://www.youtube.com/watch?v=c-EbQDB0RsQ)を見つけてFontAwesomeをけっこう簡単に実装できたのでやり方をこちらにも書いときます。

そもそもImportmapの使い方は知らなかったのが詰まる原因だったと思うんで反省していますが、とにかく実装できたのですっきりしました。

# パッケージマネジャーでインストールした後に

元記事を表示

Ruby3.1を触ってみる(IRB のオートコンプリートとドキュメント表示)

# 0. はじめに
[前回](https://qiita.com/Satoooon/items/2412e9ba6de1f3afefb1) に引き続きRuby 3.1の新機能について動かしながら紹介しようと思います。

今回は IRB のオートコンプリートとドキュメント表示 になります。
irb自体はRubyを触っていれば簡単な動作確認したりと誰しもが使ったことがあるものだと思います。
それの拡張された機能になります。早速みていきましょう!

# 1. リリースノートを見てみる
> IRB にオートコンプリート機能が実装され、コードを入力するだけで補完候補ダイアログが表示されるようになりました。Tab と Shift+Tab で上下に移動できます。
また、補完候補を選択している時に、ドキュメントがインストールされている場合、補完候補ダイアログの横にドキュメントダイアログが表示され、内容が一部表示されます。Alt+d を押すことでドキュメント全文を読むことができます。

引用: https://www.ruby-lang.org/ja/news/2021/12/25/ruby-3-1-0

元記事を表示

【Rails】countメソッドにカラムを指定してエラーを回避

## 環境
Rails 6.0.1
Ruby 2.6.3
PostgreSQL 11.16

## 状況

relationでjoinしている“`posts“`に“`count“`したら下記のエラーが発生し“`count“`できない。
“`ruby
posts = Post.joins(:users)
=>Post::ActiveRecord_Relation

posts.count
=>ActiveRecord::StatementInvalid: PG::SyntaxError: ERROR: syntax error at or near “AS”
“`

## 解決法

ActiveRecordのcountメソッドは引数にカラムを指定できるのでそれを使うとcountできる。

“`ruby
posts = Post.joins(:users)
posts.count(:posts)
=> 4
“`

## 参考

https://railsdoc.com/page/count

元記事を表示

using Module.new ってなに?

## はじめに

調べ物をしている際に、`using Module.new {}`というコードを見たのでどういう処理をするんだろうと思い調べてみた備忘録です。

## そもそも無名モジュールってなに?
無名モジュールは、その名の通り名前のついていないモジュールのことです。`Module.new`で作成したモジュールは無名モジュールとなるらしいです。
~~もちろん無名なので、includeなどで指定することが出来ませんので他のファイルから呼び出すこともできません、多分…~~。Mix-inすることできますね…(@scivolaありがとうございます)

“`ruby
mod = Module.new {
def self.anonymous
puts “anonymous module”
end
}

mod.name
# => nil

mod.anonymous
# => anonymous module

MyClass = Class.new do
include mod
end

MyClass.ancestors
# => [MyClass,

元記事を表示

Rails7でflash.nowを表示させる

### 解決したい事

私が出した質問なのですが、まずはご覧になってください。

https://qiita.com/woodman0224/questions/0eb98675a161c2dce0a5

記事の通りではありますがrenderはされてもflash.nowが表示されなくて困っていました。

### 解決策
たくさんの記事をよく読んでいると、もしかしてと思う事があったので試してみたらできました。

それはフォームでTurbo Drive を無効にするという方法です。
“` ruby
#sessions/new.html.erb

#改善前
<%= form_with(url: login_path, scope: :session, local: true) do |f| %>

#改善後
<%= form_with(url: login_path, scope: :session, local: true, data: { turbo: false }) do |f| %>

“`

やはり予想が正しくrailsのバージョン

元記事を表示

macOS Monterey (x86_64-darwin-21) で libv8 の install を行う方法

## はじめに

macOS Monterey (x86_64-darwin-21) 環境下で [mini_racer] が依存する [libv8] gem を install する必要があり対処方法をまとめました

## TL;DR

– macOS Monterey (`x86_64-darwin-21`) 環境下では “libv8” gem の install は出来ない
– 前 macOS Big Sur (`x86_64-darwin-20`) 用のファイルを取得し patch をあてセットアップを行うと簡単

## なぜ macOS Monterey で簡単に install できないのか

[All versions of libv8] を確認してみると `x86_64-darwin-21` 用の binary が提供されていません。
binary が提供されていない = source から build する必要があります

[libv8] の README に記載されている Platform は以下のみとなり `x86_64-darwin-21` 環境下だと簡単に in

元記事を表示

Rails7.0.4 Ruby3.1 Mysql8.0 docker-compose で環境構築する。ついでにTailwindCSS と DaisyUI も入れちゃう。

# はじめに
勉強用にちいさなアプリを作成することがありますが、環境構築がめんどくさくて止めちゃうことありますよね?
環境構築で詰まらないように記録しておきます。

Rails の環境構築の記事はたくさんありますが、できるだけ最新のバージョンでやってみました。
Rails 7.0.4
Ruby 3.1
Mysql 8.0
# 参考

https://docs.docker.com/samples/rails/

https://qiita.com/croquette0212/items/7b99d9339fd773ddf20b

# プロジェクトの作成

“`sh
mkdir test-app
cd test-app
“`

# 設定ファイルの作成

“`Dockerfile:Dockerfile
FROM ruby:3.1

RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
COPY . /mya

元記事を表示

[Ruby]Dateクラスについて

# Dateクラスとは?
Rubyの標準ライブラリの機能

# 使い方は?
以下一文を記載します
“`ruby
require “date”
“`

# 例えば・・・
今日の日付を取得したい時は
“`ruby
Date.today
“`
で取得できます。

今日の曜日を取得したい時は
“`ruby
Date.today.wday
“`
と記述しますが、**wday**は曜日を0(日曜日)から6(土曜日)の整数で取得するので、
配列を定義して日曜日(0番)〜土曜日(6番目)まで文字列を格納する必要があります。
その**wday**で取得した値を配列より取り出し、曜日を取得します。

“`ruby
require “date”
day = Date.today.wday
days = [“日曜日”, “月曜日”, “火曜日”, “水曜日”, “木曜日”, “金曜日”, “土曜日”]
puts days[day]
“`
例:dayの値が5の場合
daysの5番目の値である金曜日が出力されます。
※配列は0から数えます

元記事を表示

比較演算子を使った条件分岐

今日もアウトプットの練習。

# 問題
ターミナルから数字を入力して、数字に応じて以下のように出力するプログラムを書いてください。

10以下なら10以下の数字です
10より大きい数値なら10より大きい数字です
10以下でかつ0以下なら0以下の数字です
ソースコードは以下の雛形を使ってください。
“`
1
2
3
input = gets.to_i

# ここからソースコードを書いてください
“`

#### 数値の比較なので比較演算子を使う

|演算子|例文|意味|
|:-: |:-:|:-:|
|== |a == b|aとbが等しい|
|!= |a != b|aとbが等しくない|
|> |a > b |aはbより大きい|
|< |a < b |aはbより小さい| |>= |a >= b |aはb以上|
|<= |a <= b |aはb以下| #### 自分の解答 ```practise.rb input = gets.to_i if input <= 10 && input <= 0 puts "0以下の数字です" elsif inp

元記事を表示

RubyKaigi 2022 参加レポート

# はじめに
RubyKaigi2022にオンラインで参加してきました。
私自身のRubyを業務で使った経験は1年半ちょっとです。
そのうち半年は一人で開発をしていたのでほとんど独学で、今の職場で色んなRubistに出会って改めて学び直してる途中です。
なのでRubyとはまだそこまで仲良くない上に、初めて参加したRubyKaigiでしたが多くの学びが得られた良い体験でした。

# 発表

全体スケジュールは以下です。
https://rubykaigi.org/2022/schedule/#day1

## [Ruby meets WebAssembly](https://rubykaigi.org/2022/presentations/kateinoigakukun.html#day1)

https://speakerdeck.com/kateinoigakukun/ruby-meets-webassembly

簡単に言えば、JavaScriptのようにRubyをブラウザ上で実行が出来る仕組みです。
恥ずかしながらWebAssemblyも盛り上がってることは知っていたのですが、こ

元記事を表示

OTHERカテゴリの最新記事