- 1. 前提条件
- 1.1. モデルやコントローラーの命名規則
- 1.2. 【Rails】development以外の環境のコンソールに入ったときのConnection refusedエラー
- 1.3. Ruby – カラーコードをRGBに変換する
- 1.4. nokogiriの使い方メモ
- 1.5. Rubyで値オブジェクトの集合(Set)を使うには
- 1.6. x | |= 1 (自己代入)について
- 1.7. 【チェリー本】steep checkで”Ruby::UnknownConstant”というエラーが発生する場合の対処法
- 1.8. Rubyのオブジェクト・メソッド・インスタンス・変数についてまとめてみた
- 1.9. 変更に強いコードを設計する(DIパターン)
- 1.10. Python,Ruby,PHP,Java,JavaScript,PerlのSQLiteの比較
- 1.11. MYSYS2のインストールできないとき
- 1.12. ActiveRecordのトランザクションを理解する
- 1.13. 一覧ページの読み込みが重たい問題について
- 1.14. Rustでmrubyを呼んで見るライブラリminutus
- 1.15. Ruby + Google Vision API で画像の色合い(RGB)を得る
- 1.16. フォームに名前を入力するとPDF化された印鑑を出力するアプリを作ろう②(PrawnによるPDFファイルのカスタム)
- 1.17. フォームに名前を入力するとPDF化された印鑑を出力するアプリを作ろう①(Ruby on RailsでPDFファイルを作成)
- 1.18. to_iの挙動を確認する
Python,Ruby,PHP,Java,JavaScript,PerlのMySQLの比較
Python,Ruby,PHP,Java,JavaScript,PerlのMySQLの比較
# Python
https://qiita.com/ab-boy_ringo/items/f05bb6329f51e1632965
# Ruby
https://qiita.com/hukuro310/items/ec91beaecd11157e0640
# PHP
https://qiita.com/ab-boy_ringo/items/8274c66b6692966fdc55
# Java
https://qiita.com/namari/items/50d9aac0faf6b7e7b314
# JavaScript
https://qiita.com/PianoScoreJP/items/7ed172cd0e7846641e13
# Perl
https://perlzemi.co
[rails 初心者]メソッド化についてまとめてみた
初めに
縁があり、通っているプログラミングスクールのメンター(質問対応者)さんから次のことを勧められました
`メソッド化に力を入れた方がいい`と。。。
ということで今回はそのメソッド化についての基本知識?考え方?を自分なりにまとめてみました!!注意事項
※自分用でまとめてますので、分かり辛かったらすいません。
また理解不足・誤りがあったらコメントにてご指摘頂けますと幸いです。m(__)m<ヨロシクオネガイシマス前提条件
①今回は`rails`を題材にして話を進めていきます。
②次の二つの知識についてある程度理解済みであること ※私の場合は60%ぐらいでした・・・多分(;^ω^)
・「メソッド」について理解していること
・「オブジェクト指向」について理解していること
※もしここで不安な方がいましたら、以下のプルダウンのところを開いてリンク先を一読してみてください。③`posts_conntroller`にて`@post = Post.find(
モデルやコントローラーの命名規則
## はじめに
モデルのクラス名で誤った名前を気付かないうちにつけてしまい、エラー解消に時間がかかったので、同じミスはしないように記録に残す。## モデル、コントローラーの命名規則
https://qiita.com/gakkie/items/3afcd505c786364aa5faこれがシンプルにまとめられていた印象。
【Rails】development以外の環境のコンソールに入ったときのConnection refusedエラー
## 環境
Rails 6.0.1
Ruby 2.6.3
PostgreSQL 11.16## development以外の環境のコンソールに入りたいとき
“`
rails console -e production
“`## コンソールに下記のエラーで入れなかったとき
“`
could not connect to server: Connection refused
“`
“`database.yml“`内のhost名を“`docker-compose.yml“`で定義されているDB用コンテナ名と一致させる。“`docker-compose.yml
environment:
DB_HOST: postgres
DB_NAME: hoge_development
DB_NAME_TEST: hoge_test
DB_USERNAME: postgres
DB_PASSWORD: password
REDIS_HOST: redis
“`“`config/database.yml
production:
<<: *de
Ruby – カラーコードをRGBに変換する
“`
gem install color
“`“`rb
require “color”Color::CSS[:red].to_rgb.to_a.map { |rate| (rate * 255).round }
# => [255, 0, 0]Color::CSS[:orange].to_rgb.to_a.map { |rate| (rate * 255).round }
# => [255, 165, 0]
“`# チャットメンバー募集
何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。
https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ
nokogiriの使い方メモ
初投稿&マークダウン慣れついでに、簡単に[nokogiri](https://github.com/sparklemotion/nokogiri “nokogiri”)の使い方のメモ。
[nokogiri](https://github.com/sparklemotion/nokogiri “nokogiri”)はRubyでスクレイピングする際に使うライブラリ。### 環境
“`
ruby 3.0.0
MacOS Mojave 10.14.4
“`### インストール&バージョン確認
権限エラーがあれば`sudo`つけること
“`
gem install nokogiri
nokogiri -v
“`### タイトル取得
下記のポータルサイトのタイトルをnokogiriを使用して、スクレイピングしてみる。
[プログラミングに関するブログ](https://supremecourtlawlibrary.org “ProCode”)“`
require ‘nokogiri’
require ‘open-uri’url = “https://supreme
Rubyで値オブジェクトの集合(Set)を使うには
# 背景: 値オブジェクトの集合(Set)を作りたい
Rubyで値オブジェクト(Value Object)の集合を使う必要がありました。
ただ、Setにそのままオブジェクトを入れるだけではうまくいきませんでした。
その解決法を調べたので記事にしました。結論としては、hashとeql?を定義すれば良いです。
この記事では、このようなサンプルコードからスタートします。(実際にはたったこれだけの値オブジェクトを作ることはないでしょうが、できる限りシンプルにするためにこうしています。)
なお、Rubyのバージョンは2.7.0です。
“`ruby
require “set”
class ValueObject
def initialize(v)
@v = v
endattr_reader :v
def ==(other)
other.instance_of?(self.class) && v == other.v
end
endv1 = ValueObject.new(1)
v2 = ValueObject.new(1)p Set.new
x | |= 1 (自己代入)について
## 環境
Ruby2.6## はじめに
**x ||= 1**のような書き方をすることを、**自己代入**と呼びます。他言語からRubyに移った人から見れば、パッと見ただけでは、「何をやっているのだろう?」と思うものです。ググってみると、変数の値が下記の場合、右辺の値(この場合1)をセットするとあります。
– nil
– false
– 変数が定義されていない3パターンに当てはまらない場合は、変数が現時点で保持している値を、そのまま維持し続けることになります。つまり、1に変換されません。
## 動作確認
x変数が未定義の場合、右辺の1を返します。x変数が未定義ということは、ロジックの上位個所で、x変数がまだ一度も現れていないということになります。x変数を始めて定義して、初期値に1をセットしたことと同じ意味になります。つまり、x = 1と同じです。
“`test.rb
x ||= 1 # => 1
“`x変数に、nil or falseがセットされている場合、1に置き換えるという意味になります。
“`test.rb
x = nil
x ||= 1
【チェリー本】steep checkで”Ruby::UnknownConstant”というエラーが発生する場合の対処法
## 発生する問題
拙著「[プロを目指す人のためのRuby入門 改訂2版](https://gihyo.jp/book/2021/978-4-297-12437-3)(通称 チェリー本)」の13.10節の内容に従ってコードを書いていくと、”No type error detected.?”と表示されるはずの部分で、エラー(warning)が出力される場合があります。### 書籍の記述
“`
$ steep check
# Type checking files:…………………………………………………..
No type error detected.?
“`### 発生するエラー
“`
$ steep check
# Type checking files:……………………………………………………………………..F..
test/fizz_buzz
Rubyのオブジェクト・メソッド・インスタンス・変数についてまとめてみた
## オブジェクトについて
### オブジェクトとは
Rubyにおいてはクラスから生成されたもののこと。### クラスについて
Hogeクラス、のようなクラスを定義したとする。RubyではこのクラスもClassクラスに所属しているオブジェクトである、というのが大きなスタート。
これはどういうことかと言うと、HogeクラスというものがあったとするとこのHogeクラスも実際は`Class.new`して作られている、オブジェクトである、ということ。
下記の意味は`Hoge=Class.new`と同意義である。
“`ruby
class Hoge
end
“`### インスタンスオブジェクト(インスタンス)
クラスから生成されるのがインスタンスオブジェクト(インスタンス)。
`クラス名.new`で生成することができる。
RailsにおけるモデルはClassクラスからインスタンスを生成し、定数を与えていると言える。
コントローラーも同様。### レシーバーとは
~~メソッドの戻り値を受ける対象~~
~~下記の場合、Personがレシーバー。オブジェクトの世界ではオブジェクトにメ
変更に強いコードを設計する(DIパターン)
# 初めに
適切に設計されたオブジェクトは単一責任になっているので実際のアプリケーションでは複数のオブジェクトを組み合わせて仕事をしています。あるクラスから他のクラスを呼び出したり、モジュールをインクルードしたり。そうすることで相互に依存が発生します。依存が発生すること自体は避けられませんが、依存の方法を管理することで変更に強いコードにすることが可能です。管理しやすいコード、変更に強いコードを書けるようになりたくてオブジェクト指向について学習しています。
学んだことをまとめます。# 依存関係があるとはどんな状態か
オブジェクトが以下について知っているときは依存関係がある状態です。
1. **他のクラスの名前**
1. **self以外に送ろうとしているメッセージ(メソッド)の名前**
1. **メッセージが要求する引数**
1. **そのメッセージが要求する引数の順番**コード例
“`ruby
class Gear
def initialize
enddef gear_inches
ratio * Wheel.new(rim, tire).di
Python,Ruby,PHP,Java,JavaScript,PerlのSQLiteの比較
Python,Ruby,PHP,Java,JavaScript,PerlのSQLiteの比較
# Python
https://qiita.com/flcn-x/items/69481d31211421e21f21
# Ruby
https://qiita.com/akito_tameto/items/868e3805dc01c7bef6ef
# PHP
https://qiita.com/39_isao/items/a5b4940138bced936de0
# Java
https://qiita.com/tsweblabo/items/39bdd73a910417a9a8df
# JavaScript
https://qiita.com/zaburo/items/a155cbc02832b501a8dd
# Perl
https://perlzemi.com/blog/20
MYSYS2のインストールできないとき
# MYSYS2のインストールで困った話
rubyの環境構築中にMYSYS2をインストールしようとした際に以下のエラーが発生しました“`
ridk install
“`
↑によって以下が起動します
“`
_____ _ _____ _ _ _ ___
| __ \ | | |_ _| | | | | | |__ \
| |__) | _| |__ _ _ | | _ __ ___| |_ __ _| | | ___ _ __ ) |
| _ / | | | ‘_ \| | | | | | | ‘_ \/ __| __/ _` | | |/ _ \ ‘__/ /
| | \ \ |_| | |_) | |_| |_| |_| | | \__ \ || (_| | | | __/ | / /_
|_| \_\__,_|_.__/ \__, |_____|_| |_|___/\__\__,_|_|_|\___
ActiveRecordのトランザクションを理解する
Railsのトランザクションについて理解が曖昧だったため調べてみました。トランザクションって何?という方から、トランザクションについて知ってるつもりな方まで読んでいただけると幸いです。
## この記事の目的
– トランザクションを理解する
– Ruby on RailsのActive Recordでのトランザクションの使い方を理解する## トランザクションとは?
トランザクションとは、複数のSQL文によるデータの更新を「1つの処理」とし、全てのSQLの実行が成功した時にデータベースに更新分を反映させることです。データベースの整合性を保つ目的があります。基本的に、複数のSQLを同時に実行する際はトランザクションを使う必要があります。
### トランザクションの使用例
代表的なトランザクションの使用例は、銀行での取引です。カエル?さんがクマ?さんに2万円送金するとします。?さんは日本におり、?さんはロンドンにいます。その際のデータベースの処理は下記のようになります。
1. ?さんの銀行口座に2万円の残高があるか確認する
1. ?さんの銀行口座から2万円を引き落とす
1.
一覧ページの読み込みが重たい問題について
初めに
ポートフォリオテーマとして業者のレビューサイトを作成しています。
以下の画像のようなレビューサイトを作っていこうと思います。![top画面1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2822721/75cffe6d-1714-fc3c-9ad8-068addf06205.png)
※自分用でまとめてますので、分かり辛かったらすいません。
また理解不足・誤りがあったらコメント頂けますと幸いです。m(__)m<ヨロシクオネガイシマス ### 発生している問題・エラー ・先程の画像のように、`一覧ページ(画像を扱っているページ限定)`を開こうとしたとき読み込みが重たくなる現象が発生 ※問題なく表示されるパターンもあれば、タイムアウトや以下のエラーが発生する時もありました。 イメージ画像 ![activerecode-errore.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2
Rustでmrubyを呼んで見るライブラリminutus
# 目的
Rustでプログラム実行中に後から渡されるプログラムを実行したいです。プラグインみたいな感じです。
Rustだけで実現するのは難しいので(wasmあたりを使うとできるという噂もありますが)、他のプログラム言語を利用します。
ここではRubyを使います。Rubyを使うものは当然Rubyがインストールされている必要があり、シングルバイナリで実行できないのが難点です。
そこでmrubyを使うことになるんですが、以前からあったものは古いmrubyしか対応していなくて微妙でした。
今回利用するminutusというライブラリは最新のmrubyをサポートしていて、mrubyの知識があまりなくてもサクッと利用できるのがよかったです。
開発の意図などは作者のブログを参考にしてください。[Minutus という mruby の Rust バインディングを作った](https://dawn.hateblo.jp/entry/2022/08/14/202458)## コードの目的
Rubyのコードでは以下の2点を確認しました。* 引数を渡せる
* HTTP通信ができる# コード
以
Ruby + Google Vision API で画像の色合い(RGB)を得る
# コード
“`rb
require “google/cloud/vision”IMAGE_ANNOTATOR = Google::Cloud::Vision.image_annotator
image_path = “https://cloud.google.com/static/vision/docs/images/bali_small.jpeg?hl=ja”
response = IMAGE_ANNOTATOR.image_properties_detection(
image: image_path,
max_results: 100
)response.responses.each do |res|
res.image_properties_annotation.dominant_colors.colors.each do |color|
red = color.color.red.round
blue = color.color.blue.round
green = color.color.green.round
フォームに名前を入力するとPDF化された印鑑を出力するアプリを作ろう②(PrawnによるPDFファイルのカスタム)
# 初めに
この記事は`フォームに名前を入力するとPDF化された印鑑を出力するアプリを作ろう`の後半です。
[フォームに名前を入力するとPDF化された印鑑を出力するアプリを作ろう①(Ruby on RailsでPDFファイルを作成)](https://qiita.com/eityamo/items/ff327fec918d882e25f6)前回まででPDFファイルを出力するところまで実装できました。今回はPrawnのGemによる基本的なカスタム方法について説明していきます。
# PrawnによるPDFのカスタム
Prawnの基本機能は`Text`、`Graphics`、`Bounding Box`の3つです。
それぞれについて説明しながら印鑑を実装していきます。実装する準備としてPDFに座標を表示します。
“`ruby:stamp_pdf.rb
class StampPdf < Prawn::Document def initialize(user) super(page_size: 'A4') # 座標を表示 stroke_axis
フォームに名前を入力するとPDF化された印鑑を出力するアプリを作ろう①(Ruby on RailsでPDFファイルを作成)
# はじめに
こんにちは!えいちゃもと申します。
今回、Ruby on RailsでPDF化を実装した際にPrawnというgemを使ったのでまとめました。
この記事を読むことで`フォームに名前を入力するとPDF化された印鑑を出力するアプリ`を作成することができます。
初学者の私でもできたので実装方法は簡単です。
仕事でよく使う?技術だと思うので、参考になれば嬉しいです。PDF化の技術を使うと下のようなアプリを作成することもできます
[反抗期届](https://www.hankouki-todoke.com/)
[Github](https://github.com/eityamo/hankouki)
反抗期を宣言する届出を簡単にPDF化することができるアプリです。
使っていただけると嬉しいです。記事は2部構成です。前半ではPDF出力を行い、後半でPrawnというGemの使い方を説明しています。
[フォームに名前を入力するとPDF化された印鑑を出力するアプリを作ろう②(PrawnによるPDFファイルのカスタム)](https://qiita.com/eityamo/items
to_iの挙動を確認する
## 環境
Ruby2.6## はじめに
to_iは文字列を数値型(Integer)に変換するメソッドです。to_iの変数にイレギュラーな値がセットされた場合、どのような挙動を示すのか、動作確認してみました。## 動作確認
– 元々数値である変数にto_iしても、元の木阿弥です。
– プラマイ符号がある場合は、プラマイ符号が取れます。
– float型の文字列に対してto_iした場合は、小数点以下が取れます。“`test.rb
puts “123”.to_i # => 123
puts 123.to_i # => 123
puts “-123”.to_i # => -123
puts “-0”.to_i # => 0
puts “+123”.to_i # => 123
puts “123.0”.to_i # => 123
puts “123.9”.to_i # => 123
puts “0.5”.to_i # => 0
“`– このような変数は0