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

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

Python,Ruby,PHP,Java,JavaScript,PerlのC言語拡張の比較

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

Python,Ruby,PHP,Java,JavaScript,PerlのC言語拡張の比較

# Python

https://qiita.com/pocokhc/items/836a3596df5facd00824https://qiita.com/nabion/items/594fb3316583130a636e

# Ruby

https://qiita.com/suketa/items/ab6b88093de4a54b3b06

# PHP

https://qiita.com/takeyoshi-k/items/2a993eefbe06be047eff

# Java

https://qiita.com/tobita_yoshiki/items/0400f7e393fc0ba2d0cb

# JavaScript

https://qiita.com/mokomium/items/57

元記事を表示

Ruby 2.6、Rails 5.2 からの Ruby 3、Rails 7 へのバージョンアップ

Herokuで稼働させていたRailsアプリケーションが `Heroku-18` のEOLを間近に控えてバージョンアップを余儀なくされたので対応内容を後世のために記しておきます。

## アプリケーションの構成概要
“`
Ruby: 2.6.3
Rails: 5.1.7

DB: PostgreSQL
開発環境: Mac、Windows
本番環境: Heroku (Heroku-18)
“`

なお、Railsは **APIモード** で実行しています。

“`
[config/application.rb]
config.api_only = true
“`

## 経緯
Herokuのstackの `Heroku-18` が来年の2023年5月1日でデプロイが行えなくなります。
当初は1つ上の `Heroku-20` への対応を検討していたのですが2年後にまた `Heroku-22` 対応するのはしんどいので一気に `Heroku-22` に上げることを検討しました。

## Heroku-22 に必要なもの
“`
Ruby: 3系 (デフォルトは3.1.x)
“`

元記事を表示

Rails コメント+星機能

皆さんこんにちわ!!

今日もプログラミングしていますか?:point_up:

今回は詳細ページにコメント星機能をつけていく機能を紹介します!!

注意:大前提としていいね機能を実装していないと実装できません!!:sunny:

![スクリーンショット (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2738887/35e479f8-8aed-90ec-d256-c50979d5b2ae.png)

Step1:星機能(詳細ページ用)の中間テーブルとアソシエーションを組む!!!

“`ruby:.ターミナル
rails g model Review eve:integer content:string user:references tweet:references

rails db:migrate
“`

Step2:userとtweetのモデルにアソシエーションの情報を打ち込む!!!

“`ruby:app/models/user.

元記事を表示

ZabbixとOxidizedを連携させてみた

# はじめに
ネットワーク機器のコンフィグ管理ツール[Oxidized](https://github.com/ytti/oxidized)を使っていますが、管理対象となる機器の情報は[予め用意](https://github.com/ytti/oxidized/blob/master/docs/Sources.md)される、CSV・HTTP・SQLの何れかで定義しておく必要があります。
機器の情報を多重管理するのに嫌気が差してきたので、機器の情報をZabbixに登録して、OxidizedからZabbixに機器の情報を問い合わせることができれば幸せになれそうなのでやってみました。

# 環境

– Zabbix 6.2.3 on Docker
– Oxidized v0.28.0 on Docker

# やること

![g3285.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/580974/66da07ba-3868-b0cd-8462-c1ed4b1c6702.png)

+ Zabbixのマクロ

元記事を表示

LoadError (cannot load such file — sassc)

Railsでscssを適用しようとしたらLoadError (cannot load such file — sassc)

“`ruby:application.html.erb
<%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>
“`

上記記載後、ブラウザで

cannot load such file — sassc

のエラーとなった。

原因

gemfile 中の gem “sassc-rails” がRails Ver7からはコメントアウトされており、インストール時に適用されないとのこと。

コメントアウト解除後、bundle install により無事解決

元記事を表示

【Rails】I18n#lで日付のフォーマットを定義しよう

## 環境
Rails 6.0.1
Ruby 2.6.3
PostgreSQL 11.16

## 日付のフォーマットを定義

“`config/locales/ja.yml
ja:
date:
formats:
default: “%Y.%m.%d”
long: “%Y年%m月%d日”
short: “%m月%d日”
time:
formats:
default: “%Y/%m/%d %H:%M:%S”
long: “%Y年%m月%d日(%a) %H時%M分%S秒 %z”
short: “%y/%m/%d %H:%M”
date_long: “%Y年%m月%d日”
date_short: “%m月%d日”
datetime: “%Y.%m.%d %H時%M分”
only_time: “%H:%M”
“`
デフォルトの形は引数の指定なし、それ以外は第2引数を指定するとデフォルト以外のフォーマットに変換できる。

“`ruby
I18n.l

元記事を表示

Ruby + GCP Vision API で画像の種類(ラベル)を取得する

# 準備

“`
gem install google/cloud/vision
“`

# コード

“`rb

require “google/cloud/vision”

image_path = ‘gs://cloud-samples-data/vision/label/setagaya.jpeg’

image_annotator = Google::Cloud::Vision.image_annotator

response = image_annotator.label_detection(
image: image_path,
max_results: 10 # optional, defaults to 10
)

response.responses.each do |res|
res.label_annotations.each do |label|
puts label.description
end
end
“`

# 画像

imageincludeとextendの違いについて

## 環境
Ruby 2.6

## はじめに
includeとextendの使い方については、Rubyの文法書を読めばたいてい書いてありますが、簡単に言えば次のようになります。

モジュールに記述したメソッドをクラスに取り込む際に、

– クラスメソッドとして取り込む場合(つまり、取り込むクラスがクラスメソッドとして定義している場合)は、extendを使って取り込みます。

– インスタンスメソッドとして取り込みたい場合(つまり、取り込むクラスがインスタンスメソッドとして定義している場合)は、includeを使って取り込みます。

文法書を読めば、「なるほど、それだけの話か」だけで終わってしまいますが、一応、手を動かして動作を確認してみないと、本当に理解したことにはなっていないものです。プログラミングは頭だけで理解するのでなく、手を動かして体で理解することが何よりも大事だと思っています。ということで、includeとextendの違いを実際に動かして確認してみましょう。

## 動作確認(その1)

つぎのようなモジュールを作成します。
“`test.rb
module Test_

元記事を表示

Moduleの使い方について

## 環境
Ruby 2.6

## はじめに
モジュールの使い方は、大きく2種類に分けることができます。

1. モジュールを単体で呼び出して使う
2. クラスにinclude(もしくはextend)してクラスの拡張メソッドとして使う

そして、上記1の方法しか使わない場合、上記2の方法しか使わない場合、上記1,2の両方を併用して使う場合とで、メソッドの定義の仕方が変わってきます。

そんな3種類の定義の仕方をまとめてみました。

## 動作確認(その1)

動作確認用に、3種類のモジュールを作成しました。
“`test_module.rb
# 1のパターン
module Test_module1
def self.mod_test1
puts “#{__method__}”
end
end

# 2のパターン
module Test_module2
def mod_test2
puts “#{__method__}”
end
end

# 3のパターン
module Test_module3
def mod_

元記事を表示

Rubyで所定の期間内のX曜日の数を計算する

# TL;DR

“`rb
# 2022-10-11 ~ 2022-12-13 の間、火曜日の個数を計算する
require ‘date’ # Rails環境では不要

(Date.parse(‘2022-10-11’)..Date.parse(‘2022-12-13’)).select(&:tuesday?).size
# または
(Date.parse(‘2022-10-11’)..Date.parse(‘2022-12-13’)).select{ |d| d.wday == 2 }.size
=> 10
“`

# はじめて
最近はイタリア語講座に参加しました、案内ではこう書いていました。

> 曜日・時間: 火曜日 19:30 ~ 21:00
受講期間: 2022-10-11 ~ 2022-12-13
授業回数: 10回

しかし私は途中参加なので、果たして案内に書かれた期間に10回の授業が完了できるのか?また、休講があるのか?を懸念していました。
私は算数があんまり得意ではないので、カレンダーで数えてみましたが、なかなか正確な結果出ませんでした。
そこで、Rubyのチ

元記事を表示

railsのedit画面から確認(confirm)画面を挟んでupdateしようとしてエラーにハマった話

>どうもaono1234と申します。記事がいいなと思ったらtwitterのフォローもお待ちしております‼

## 1. エラー状況
アプリ制作中にedit画面からconfirmアクションに遷移したら`couldn’t find Feed with ‘id’=confirm`というエラーが発生してしまいました。?
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2534058/dfcdecb2-a8ff-b805-0a1c-bbe9062ef641.png)

new画面からconfirmアクションに遷移するときはこのようなエラーは発生せず遷移できたのですが…?

まず、不可解な点はidの中に通常、番号が入るところが、cofirmという文字列が入ってしまっている点です。
このとっかかりから原因を突き止めることができました。

`コード`と`confirmにパラメータ渡すときのlog`を以下に載せておきますので、皆さんも考

元記事を表示

【超簡単】Rails 日ごとに投稿をまとめ詳細ページに表示する

# はじめに
日ごとに投稿を1つのリンクにまとめ、その遷移先にその日の投稿がまとまったページを作成する方法を伝授します!
コピペだけで実装できます!
(※実装しているものと若干合わせる必要はあると思います?)

## コントローラー

“`ruby:posts_controller.rb

class TweetsController < ApplicationController def index @tweet = Tweet.new @tweets = Tweet.group("date(created_at)") end def create tweet = Tweet.new(tweet_params) if tweet.save redirect_to :action => “index”
else
redirect_to :action => “index”
end
end

def show
@date = params[:date]
@tweets = T

元記事を表示

Railsのデータベースコマンドこれさえ見れば問題なし!

## 概要
Railsアプリでデータベースをmigrateする際の有用なコマンドをこの記事にまとめる。

## migrateコマンドまとめ
### ファイル作成コマンド
– マイグレーションファイル作成
`rails g migration クラス名`
“`
$ rails g migration CreateUsers
Running via Spring preloader in process 310
invoke active_record
create db/migrate/20220913055401_create_users.rb
“`

– モデルファイル作成
`rails g model モデル名`
“`
$ rails g migration User
Running via Spring preloader in process 315
invoke active_record
identical db/migrate/20220913055401_create_users.rb

元記事を表示

WEB開発をやり始めてみる(Ruby:繰り返し処理)

# やったこと
Rubyではいろんな繰り返し処理があるようなのでメモ的なもの
使い方みたいなのはまた覚えるとして、とりあえず書いていこう

## 最初から最後まで順番に繰り返しながら実行する
for文もあるけど、今回はやらない
“`ruby:
numbers = [1,2,3,4,5]
numbers.each do |number|
puts number
end

# 一行で書くこともできる
numbers.each { |number| puts number }
“`

## 単純にn回数実行(出力)したい時
“`ruby:
#全部やっていることは一緒書き方が違うだけ
5.times do
puts ‘Hello!’
end

5.times do |i|
puts “#{i}: Hello!”
end

5.times { |i| puts “#{i}: Hello!” }

5.times { |i|
puts “#{i}: Hello!”
}
“`

## 指定した条件が真である時処理を繰り返す
“`ruby:
# 10になるまでカウントす

元記事を表示

【Rails】deviseの導入とログイン機構作成時のメモ

# deviseの導入手順
Gemfileに以下を記述。devi**c**eではなく、devi**s**eなのでご注意を。
“`ruby:Gemfile
gem ‘devise’
“`
ターミナルで以下を実行し、gemのインストール。
“`
bundle install
“`
以下のコマンドを実行し、設定ファイルを作成。
“`
$ rails g devise:install
“`
以下のコマンドを実行しモデルの作成とマイグレート
“`
$ rails g devise user

$ rake db:migrate
“`

ログイン機構が表示されるかどうかを確認するため、以下のようなviewをapp/views配下に作成してみる。

“`erb:home/show

HOME

<% if user_signed_in? %>

メールアドレス: <%= current_user.email %>

<%= link_to "ログアウト", destroy_user_session_path, method: :dele

元記事を表示

単体テストコード(userモデル)記述の流れ

# はじめに
単体テストコードを実行する流れをまとめる

# 単体テストコード実行流れ
## 1.テストコードを記載するファイルを作成する。
% rails g rspec:model user
(Userモデル用のテストファイルを作成できる。)

「create spec/models/user_spec.rb」と記載が出れば問題ない。

<補足>
RSpecでモデル、ビュー、コントローラーのテストを行うためには、rails_helper.rbというファイルを読み込む必要があるため、
上記で作成したテストファイルの1行目にはrequire ‘rails_helper’と記述されている。

## 2.テストコードを記載

#userモデルの単体テストコードの一例(spec/models/user_spec.rb内)

require ‘rails_helper’

RSpec.describe User, type: :model do
before do
@

元記事を表示

WEB開発をやり始めてみる(Ruby:Cloud9環境構築)

# 目的
web開発としてRubyの学習を始めてみる。
環境はCloud9で作成しています。

# やったこと
“`ruby
### 環境を整えます
$ sudo yum update && sudo yum upgrade
“`
“`ruby
### バージョンを指定します(3.0.2)
$ rvm -v
rvm 1.29.8 (1.29.8) by Michal Papis, Piotr Kuczynski, Wayne E. Seguin [https://rvm.io]

$ rvm get stable
Downloading https://get.rvm.io

$ rvm install ruby-3.0.2
Searching for binary rubies, this might take some time.

$ rvm list
* ruby-2.6.3 [ x86_64 ]
=> ruby-3.0.2 [ x86_64 ]

$ rvm use 3.0.2
Using /home/ec2-user/.rvm/gems/ruby-3.0.2

元記事を表示

WEB開発をやり始めてみる(Ruby:条件分岐&メソッド)

# 目的
Rubyの学習でまずは基礎文法のやり直し
ほとんど忘れているため、メモとして残して見直せれるように

# やったこと
### if文
“`ruby:
score = 90
if score >= 90
puts”A”
elsif score >= 80
puts”B”
elsif score >= 70
puts”C”
else
puts “D”
end

$ ruby hello.rb
A
“`
### case文
“`ruby:
frute = “banana”

case frute
when “banana”
puts”イエロー”
when “Apple”
puts”レッド”
when “orange”
puts “オレンジ”
else
puts”それ以外”
end

$ ruby case.rb
イエロ-
“`
### メソッド
“`ruby:
def cry( animal)
if animal==”cat”
“にゃー”
else
“????”
en

元記事を表示

WEB開発をやり始めてみる(Ruby:FizzBuzz)

# やったこと
### FizzBuzz
“`ruby:
def fizz_buzz(n)
if n % 15 == 0
“FizzBuzz”
elsis n % 3 == 0
“Fizz”
elsis n % 5 == 0
“Buzz”
else
n.to_s
end
end

puts(1)
puts(2)
puts(3)
puts(5)
puts(15)
“`
# まとめ
### 15が先にあるのは、仮に3が上にあると3が該当するため、15を先に入れている。
“`ruby:
def fizz_buzz(n)
if n % 15 == 0
“FizzBuzz”
“`
### n.to_sは「n」に対して数値で返すメソッド(.to_s)
“`ruby:
else
n.to_s
end
“`

元記事を表示

WEB開発をやり始めてみる(Ruby:配列+いろんなメソッド)

# やったことメモ
配列を使ったメソッドの使い方のまとめ
“`ruby:
$ irb
#### 配列の書き方
2.5.0 :001 > a = [1, 2, 3, ‘aa’, [1, 2, 3]]
=> [1, 2, 3, “aa”, [1, 2, 3]]

#### 配列の表示の仕方
2.5.0 :002 > a[0]
=> 1
2.5.0 :003 > a[1]
=> 2
2.5.0 :004 > puts a
1
2
3
aa
1
2
3
=> nil

#### 配列の中身が空かどうか
2.5.0 :005 > a.empty?
=> false
2.5.0 :006 > b = []
=> []
2.5.0 :007 > b.empty?
=> true

#### 配列の中身に〇〇が含まれているか
2.5.0 :008 > a.include?(‘aa’)
=> true
2.5.0 :009 > a.include?(‘b’)
=> false

#### 配列の中身を逆順に表示(!を使うと破壊的メソッドといって、元の中身を書き換える)

元記事を表示

OTHERカテゴリの最新記事