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

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

Python,Ruby,PHP,Java,JavaScript,Perlの連想配列の比較

Python,Ruby,PHP,Java,JavaScript,Perlの連想配列の比較

# Python

https://qiita.com/hz1_d/items/407dd13f90a8a4533d23

# Ruby

https://qiita.com/ryouya3948/items/5ea2049abfd92eb1ded7

# PHP

https://qiita.com/shizen-shin/items/8383e27c7cf16c0ccb4a

# Java

https://qiita.com/taropon_wwwww/items/95477174ac16287c9744

# JavaScript

https://qiita.com/yrn03m/items/87e223acc6e733b50429

# Perl

https://perlzemi.com/blog/20161013147635.html

元記事を表示

【Rails】chartkickを使用してシンプルなグラフを扱う

※rails6を使用しています

# chartkick とは
Railsで簡単にグラフを作成することができるライブラリです。
Railsで使用することが主な目的のようですが、多言語(React, Vue.js, Ruby, Python, Elixir, and Clojure)でもグラフを作成することができます。
github [chartkick](https://github.com/ankane/chartkick)

https://chartkick.com/

![Line_chart.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730527/eb4724cf-a04d-695b-b92b-272052504fae.png)
![area_chart.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730527/401b2bd8-a834-0bbb-2228-bf9097426d17.png)

他に

元記事を表示

Zaim APIを使うためにRubyでAPIクライアントを作った

## 初めに
この記事は記事投稿キャンペーン

https://qiita.com/official-events/6d31965c499a69377c0b

の参加記事です。

今僕はシェアハウスをしており、共通で使う消耗品などを毎月決算する運用をしています。
費用の計算を毎回手で行うのは手間だなと思ったので、いい感じに計算を行うための仕組みを作りました。

自動で計算をする上で、家計簿アプリの[Zaim](https://zaim.net/)を使い、以下のような仕組みを実現したので記事にします。

1. Zaimに使った費用を記録する
1. 毎日前日に使った費用の一覧をSlackに自動投稿する
1. 毎月の締め日に、先月使った費用の合計数、費用一覧、一人当たりの費用をSlackに自動投稿する

この仕組みを作るにあたり、Zaim APIを簡単に使えるようにするためのRubyクライアントを作成したので紹介します。

## なぜZaimなのか
僕は普段はマネーフォワード MEを使って口座管理をしています。
しかし今回はZaimを採用しました。
なぜZaimを利用したかというと、Zaim

元記事を表示

STAGING環境でデプロイした時のSSHKit::Command::Failed: git ls-remote git@github.com:velljp/circus-vell.git 解決法

# エラー内容
https://gyazo.com/02b8cf241cc1f370a5635ea6fb236e2c
“`
リンクの内容

[cvsys@ip-10-1-0-21 ~]$ sh dist.sh
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
INFO [c61e9b14] Running rsync -az -e ssh /home/cvsys/.rbenv/ 127.0.0.1:/home/cvsys/.rbenv as cvsys@localhost
DEBUG [c61e9b14] Command: rsync -az -e ssh /home/cvsys/.rbenv/ 127.0.0.1:/home/cvsys/.rbenv
INFO [a483de23] Finished in 0.4

元記事を表示

rspecテストで実行コマンドを押しても回らない

# エラー画面

https://gyazo.com/ae90547dac639975630a6f11e989f294
ターミナルがそこで止まって、全く動かない状況。
https://gyazo.com/8d831227cc81304526ad6232a0fad014
パンケーキもずっとloadingしている。

# 解決手順
まずは、データベースを直すところから始める。
### ①mysqlに接続する。

“`
mysql接続コマンド
mysql -u root   
“`
https://gyazo.com/b1c48549fed672bfe0865b13510d2d39

### ②データベースを確認する。
このように、現在のデータベースが確認できる。
https://business.facebook.com/commerce/catalogs/476007677054230/home?business_id=903880390185351

### ③データベースを削除する。

“`
drop database circusvell_test;
“`
https:/

元記事を表示

model作成時に思い出したい 忘却録

## はじめに
学習する上でメモとして残したいものをここに記載します。
今回はmodelの作成時について分からなかったことを記載します

## reference型
今回はdeviseのUserの拡張としてフォロー及びフォロワー関係を作ることが目的でした。
そこでFollowsテーブル(model)を作ることにしました。
参考記事(1)には以下のように記載があった

“`ruby
$ rails g model Relationship follower:references followed:references
“`
この文を見て思ったのがreferencesとは?でしたので参考記事(2)を読んだところこんな感じらしい。

– refernce型は外部キー(FOREIGN KEY)を追加する時に使う
– reference型を使うことによってインデックスを自動に貼ってくれる
– 自動で_idを作成してくれる

外部キーを追加する際に使える型で要件によっては使っていいものくらいに留めておきます。
参考記事(2)にもreference型を使わなくても記載できる方法が出来るらしい。

元記事を表示

RDBのユニーク制約とRailsのユニークバリデーションの違いを理解しよう

Railsアプリケーションで下記のusersテーブルのemailにユニーク制約をつけたい場合、どのように実装しますか?

* users

| Field | Type | Null |
|:———–|:————|:————-|
| id | bigint(20) | NO |
| email | varchar(255)| NO |

だいたいの場合、下記2つのいずれか、または両方を実装するのではないでしょうか?
* RDBのemailカラムにユニークインデックスを付ける
* Userモデルにuniqueness validationを実装する

どちらの実装でもデータがユニークであることとをチェックしてくれるという意味では同じように感じますが、制約の完全性が全然違います。
一言で言うと、RDBのユニーク制約は100%保証されるが、Railsのuniquenessは突破される可能性があります。

# この記事で使うユニーク制約

記事の最初に記載したusersテーブルを使

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlの配列の比較

Python,Ruby,PHP,Java,JavaScript,Perlの配列の比較

# Python

https://qiita.com/gouwan/items/c83b47ce1b7c77cce7c5

# Ruby

https://qiita.com/may88seiji/items/ce9396a4c267a3d449ae

# PHP

https://qiita.com/tokutoku393/items/ea2a61765eda1dee8f2e

# Java

https://qiita.com/sentral1110728/items/532de46714b7215a2e99

# JavaScript

https://qiita.com/takeshisakuma/items/b23b1a748098f30e2ff2

# Perl

https://perlzemi.com/blog/20161012147627.html

元記事を表示

【JavaScript】プレビュー機能の実装

# 【JavaScript】プレビュー機能の実装

###### 特徴
・画像を選択するとプレビュー画像が表示される
・画像は何度も選び直すことができプレビュー画像もその度変わる

## 手順
### ■HTML側の編集
#### ❶画像投稿ページのHTMLにプレビュー画像を表示するスペースを作成
“`

“`

### ■JavaScript側の編集
#### ❷preview.jsを作成して読み込むよう設定
app/javascriptの中にpreview.jsを作成
“`ruby:app/javascript/packs/application.js
require(“@rails/ujs”).start()
require(“@rails/activestorage”).start()
require(“channels”)
require(‘../preview’) // 追記する
“`
#### ❸preview.jsの編集
##### ①画像投稿ページのフォームを取得
##### ②今記述したプレビュー画像を表示

元記事を表示

初めてのOSSコントリビュート(Ruby gem)

# はじめに
先日 (超軽微ですが、、)初めてOSSコントリビュートしました :tada:
意外とgemにPRを送るまでの詳細な手順をまとめている記事が見つけられなかったのでまとめたいと思います。

# きっかけ
[gem recapthca](https://github.com/ambethia/recaptcha)の挙動を確認するためにコードを見ていると叩いているAPIのバージョンが古いことに気づきました。
OSSコントリビュートに興味があったのでこれならすぐ修正できる!と思いPRを送ることに。

# PRを送るまでの流れ
## ドキュメントを読んで、コントリビュート時の注意点を確認
Contributingについて記載がないか確認します。
例:Ruby
>See [“Contributing to Ruby”](https://docs.ruby-lang.org/en/master/contributing_md.html), which includes setup and build instructions.

## 既にある issues, PRを確認する
クローズさ

元記事を表示

あなたは知っている?Rubocop に教えてもらった Ruby の小ネタ5つ

## はじめに
Ruby 2.7 以降に追加された新しめの文法を5つ紹介します。
業務で Ruby のアップデート、および rubocop のアップデートをしました。
その際に学んだことですので、rubocop 関連の記事を参考にしています。

## Rails/WhereExists 
**`where` してから `exists?` するのではなく、`exists?` 単体でOK**
~~~ruby
# bad
User.where(name: ‘john’).exists?

# good
User.exists?(name: ‘john’)
~~~

https://www.rubydoc.info/gems/rubocop-rails/2.8.1/RuboCop/Cop/Rails/WhereExists

## Performance/MapCompact
**`map.compact` は`filter_map`で書き換えられる⚠︎**
`compact` は自身から `nil` を取り除いた配列を生成して返します。
`compact!` は自身から破壊的に `nil`

元記事を表示

RubyからJavaに移行する時の考え方

# 主な違い
今までrubyを学習してきて、仕事でjavaを使うことになりました。
rubyと違うところがあったので、自分なりにまとめてみたいと思います。

`Java`コンパイラによってコンパイルされる静的型付け言語
`Ruby`インタプリタによって解釈されるスクリプト言語で、動的型付け言語

上記が一般的に説明されている説明となります。

自分の言葉で説明すると、
`Java`は型を宣言するのでコードが長くなるが、大規模開発などたくさんの人が関わる開発に向いている。習得の難易度は`Ruby`よりも高め。`Ruby`は、型を宣言する必要がなく短くて直感的にコードを書ける。アジャイル開発に向いている。習得の難易度が低いことや、日本語のドキュメントが充実しているので、プログラム初心者に向いている。

# システムの違い

サーバーやデータベースの違いについて、表を作りました。(下記)

[]()![JavaとRailsの比較最終-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2661107/f5f88

元記事を表示

[Rails]MVCの責務範囲を サクッと説明

## Model
– controllerの情報は参照しない
– よくあるのは、controllerで定義した`current_user`を参照してしまっていること。

– viewに依存するロジックは記述しない
– DecoratorやHelperで記述する

## Controller
– リクエストを受け取り、何らかの処理を行い、レスポンスを返すだけ
– インスタンス変数の代入はアクションメソッド(indexやnewなど)直下で行う
– before_actionやprivateメソッド内で代入すると可読性が下がってしまう

## View
– 複雑なロジックが含まれると可読性が落ちるので、DecoratorやHelper、Modelでの記述を検討する

### おまけ

## Decorator
– Modelに依存する表示用のロジックを追加するモジュール
– `モデル名Decorator`という命名規則に従う

## Helper
– Modelに依存しない表示用のロジックを記述する
– ただし、複数のモデルに依存する表示用のロジックを記述す

元記事を表示

Rubyのメソッドと戻り値について

# 目次
1.メソッドとは?
2.戻り値とは?

# 1.メソッドとは?
メソッドとは、「複数の処理を1つにまとめたもの」であり、他の言語における「関数」に相当する。
メソッドの作り方は以下の通りである。
“`
def メソッド名
  処理
end
“`
※メソッドには、引数(追加情報)を渡すことでメソッドの中でその値を使うことができる。
※メソッドを呼び出すには、「メソッド名(値)」と入力する。
具体的にメソッドを使って、自己紹介をしようとすると、、、
“`index.rb
def self_intro(name)
puts “はじめまして!”
puts “私は#{name}です。”
end

self_intro(“太郎”) #メソッドの呼び出し「メソッド名(値)」
“`
すると以下のように出力される。
“`console
はじめまして!
私は太郎です。
“`
# 2.戻り値とは?
戻り値とは、「メソッドを呼び出した際に受け取る値のこと」のことである。
メソッドの中でreturnを使うことで呼び出し元で値を受け取ることができる。
returnの使い方は以

元記事を表示

deviceを使わないでログイン認証機能を作ってみる

※この記事はRails初学者向けです

:::note info
deviceってなに?
railsのgemの一つで、ログイン認証機能が簡単に実装できる。
[https://github.com/heartcombo/devise](https://github.com/heartcombo/devise)
:::

gemは便利だけど、勉強のためにログイン認証周りの仕組みに興味があったので実装してみました。view周りの実装は今回の趣旨とは異なるため触れてません。
## モデル・コントローラの準備

### 1. Userモデルを作成して、schemaファイルを修正

“`rb
$ rails g model user name:string email:string encrypted_password:string
invoke active_record
create db/migrate/[timestamp]_create_users.rb
create app/models/user.rb
invoke

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlの繰り返し構文の比較

Python,Ruby,PHP,Java,JavaScript,Perlの繰り返し構文の比較

# Python

https://qiita.com/atsui-ocha/items/5b8e4f973b36e78fdaf1

# Ruby

https://qiita.com/beanzou/items/6231d3d0a926765ddbb4

# PHP

https://qiita.com/rana_kualu/items/0abd2b6f69527b0b4b92

# Java

https://qiita.com/morioheisei/items/e686e33b60c6a60e87f0

# JavaScript

https://qiita.com/tetsuyakojima/items/fd63f91a4e34d6bad28b

# Perl

https://perlzemi.com/blog/20170521149524.html

元記事を表示

【Rails】ページネーション「kaminari」と「bootstrap」を使用してカスタマイズ!

# はじめに
kaminariというGemには、BootstrapなどのCSSフレームワークのテンプレートファイルが用意されています。
CSSフレームワークのクラスを手動で付与しなくても、専用コマンドを実行するだけで簡単にテンプレートファイルを実装できます。

※Rails6を使用しています。
※bootstrap導入済み

# 完成イメージ
![pagenation.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730527/8de427a8-6638-ca5a-d627-2ea5a4789e5f.png)

## Getting Started
#### ①Kaminariをインストールする
ページネーション機能の実装には、gemの「kaminari」を使う。
“`:Gemfile
:
:

gem ‘kaminari’,’~> 1.2.1′

“`
#### ②bundle installする
“`:terminal
$ bundle install
“`
#### ③kaminari

元記事を表示

DockerのRailsアプリからRedisサーバに接続したい

## はじめに
docker環境で起動しているrailsアプリからホストで起動しているredisサーバに接続したい。
なお、前提として、dockerでのrailsアプリの環境構築が完了しているものとする。

## 環境
– ローカル環境
– macOS
– docker環境
– ruby 3.1.2
– Rails 7.0.3.1

## 手順
### 1. ローカルホストでredisを起動する
まずredisをインストールするために、下記のコマンドを実行
“`
brew install redis
“`
インストールされているか確認する
redisがあればOK
“`
$ brew list | grep redis
redis
“`
redisサーバをバックグラウンドで起動
“`
brew services start redis
“`
redisのクライアントコマンドで以下のように、接続確認を行い、”PONG”が返ってくることを確認
“`
$ redis-cli ping
PONG
“`
### 2. rails側にredisを導入する
Gemfileに

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlの条件分岐の比較

Python,Ruby,PHP,Java,JavaScript,Perlの条件分岐の比較

# Python

https://qiita.com/Morio/items/1e06e7ac768758af5ffe

# Ruby

https://qiita.com/sagawashu/items/0f08266d5f72229423d9

# PHP

https://qiita.com/Hashimoto-Noriaki/items/dfb76d440a64eccba95d

# Java

https://qiita.com/setonao/items/ebc341ddf6d95295c48e

# JavaScript

https://qiita.com/taiju_suzuki/items/e2bf11fcf1645623235f

# Perl

https://perlzemi.com/blog/20161023147731.html

元記事を表示

rbenvのインストールで失敗する

# 動作環境
M1 macboook pro
macOS Monterey ver.12.5

# 解決方法
ターミナルで`brew install rbenv`を実行すると、以下のエラーが表示する。
“`
==> Downloading https://ghcr.io/v2/homebrew/core/pkg-config/manifests/0.29.2_3
Already downloaded: /Users/arakijun/Library/Caches/Homebrew/downloads/ac691fc7ab8ecffba32a837e7197101d271474a3a84cfddcc30c9fd6763ab3c6–pkg-config-0.29.2_3.bottle_manifest.json
Error: rbenv: Failed to download resource “pkg-config_bottle_manifest”
The downloaded GitHub Packages manifest was corrupted or modified (i

元記事を表示

OTHERカテゴリの最新記事