- 0.0.1. Error message “error:0308010C:digital envelope routines::unsupported” の解決方法
- 0.0.2. privateメソッドとは何か、どういう時に使うのか
- 0.0.3. ローカル変数とインスタンス変数の違い
- 0.0.4. gem ‘capistrano-sidekiq’ を使って デプロイ中にcommand not found(コマンドが見つかりません)エラー
- 0.0.5. Ruby3.0.0+Rails6.1.3からRuby3.2.0+Rails7.0.4にバージョンアップした話
- 0.0.6. haml-rails によるerb->haml変換
- 0.0.7. undefined method `current_sign_in_at’ for #< ~~~ > の解決方法
- 0.0.8. 【Ruby】Hashのデフォルト値の設定
- 0.0.9. Ruby3.0にアップデートする時、sorted_setをインストールする前に確認してほしいこと
- 0.0.10. 【個人開発】料理人のための仕込み管理アプリCucina-クッチーナ-を作りました
- 0.0.11. DDBJからsraをダウンロードするためのURLを列挙する
- 0.0.12. メソッドについて
- 1. Rubyとは
- 2. オブジェクト指向とは
Error message “error:0308010C:digital envelope routines::unsupported” の解決方法
“`
$ bundle exec bin/webpack-dev-server
“`
上記のコマンドを実行時に
Error message “error:0308010C:digital envelope routines::unsupported”エラーが表示# 解決方法
“`
$ export NODE_OPTIONS=–openssl-legacy-provider
“`上記のコマンドで解決
privateメソッドとは何か、どういう時に使うのか
## Privateメソッドとは何か
クラス外からは呼び出せず、クラス内でのみ使えるメソッドのこと。
(インスタンスを作ってprivateメソッドを直接呼び出すということができない)“`HogeHoge.rb
# encoding: UTF-8class HogeHoge
def hoge_method
p(“ほげほげ”)
enddef call_private_hoge_method
p(“プライベートな情報を取得する前の事前作業”)
p(“………”)
private_hoge_method
endprivate
def private_hoge_method
p(“プライベートな情報を取得!”)
end
endhogehoge = HogeHoge.new
hogehoge.hoge_method
hogehoge.call_private_hoge_method
hogehoge.private_hoge_method # 直接呼び出すとエラーになる“`
`
ローカル変数とインスタンス変数の違い
# はじめに
#### ※以下の内容には誤りが含まれる可能性がありますRubyには使える変数が4種類あります。なかでもローカル変数とインスタンス変数の違いが重要です。
### 参照範囲が違うんですね
# 具体的な内容
### ・ローカル変数
変数名が小文字または`_’で始まる変数。
ブロック内またはメソッド定義内でしか参照されない。
“`ruby:ローカル変数
class Human
name = “太郎”
def myName
puts name
end
end
human = Human.new
human.myName
“`### ・インスタンス変数
変数名が@で始まる変数。
newメソッドで作成したオブジェクトの中に限り、どこからでも参照
できる。通常オブジェクトの外からは参照されない。
“`ruby:インスタンス変数
class Human
def initialize(name)
@name = name
end
d
gem ‘capistrano-sidekiq’ を使って デプロイ中にcommand not found(コマンドが見つかりません)エラー
バージョンが古いためか結構詰まってしまったので書いておきます。
gemをinstallしてCapfileに`require ‘capistrano/sidekiq’`と書いただけのシンプルな設定です。## 公式
capistrano: https://github.com/capistrano/capistrano
sidekiq: https://github.com/mperham/sidekiq/wiki/Deployment
capistrano-sidekiq: https://github.com/seuros/capistrano-sidekiq## 解決方法
– capistranoのバージョンが3.4.0だったため、3.9.0にアップデート(※2023年/1月現在の最新は3.17です)
– deploy.rbに`set :rbenv_map_bins, %w(rake gem bundle ruby rails sidekiq sidekiqctl)`のように、sidekiqとsidekiqctlを追記## どんなエラーだったか
`cap staging
Ruby3.0.0+Rails6.1.3からRuby3.2.0+Rails7.0.4にバージョンアップした話
## はじめに
Heroku-18 Stackで動いているアプリケーションがあり、こちらが[2023/4にEOL](https://devcenter.heroku.com/ja/articles/heroku-18-stack#support-period)を迎える。
それに伴いHeroku Stackを上げるとRubyのバージョンも上げないといけなかった。[参考](https://devcenter.heroku.com/ja/articles/ruby-support#ruby-versions)
>Heroku-22 で使用可能な最も古い Ruby バージョン: Ruby 3.1.0せっかくだったらこの機会に最新にしようと思い、バージョンを上げたのでその時の注意事項をメモ書き程度に残しておく。
前回上げた話はこちら。
[Ruby2.3.4+Rails5.0.4からRuby3.0.0+Rails6.1.3にバージョンアップした話](https://qiita.com/yamamoto_hiroya/items/62dfae2dda7f35452b44)## Gemf
haml-rails によるerb->haml変換
Gemfile書き方
“`Gemfile
gem ‘haml-rails’
“`変換コマンド
“`
rails haml:erb2haml
“`元の.erbファイルを削除するか -> y
“`
Would you like to delete the original .erb files? (This is not recommended unless you are under version control.) (y/n)
y
Deleting original .erb files.
“`
undefined method `current_sign_in_at’ for #< ~~~ > の解決方法
# はじめに
こんにちは! @Keichan_15 です!Deviseを用いて `sign_up` や `sign_in` を行うと、表題にある `undefined method ‘current_sign_in_at’ for`のエラーが出た際の解決方法について、備忘録も兼ねて記載していこうと思います。
尚、こちらのエラーを検索すると下記のような記事や解決方法が出てきます。結論、解決方法として間違いでは無いです。今回の想定としてはdeviseをinstallしてごくごく一般的なモデル作成を行った場合 `ex) $ rails g devise User` を前提としてお話していきます。
下記の方法でも間違いでは無いですが、マイグレーションファイルを修正してresetを掛けるといったナンセンスなことは面倒なので…ってことですね。https://qiita.com/Asaiii12/items/6893ffe808166da52499
https://stackoverflow.com/questions/55735895/nomethoderror-undefined-m
【Ruby】Hashのデフォルト値の設定
Hashのデフォルト値を調べ、自分のまとめ用で作ってみました。
せっかくなのでHashについても簡単にまとめながら記事を書きます。# Hashとは
連想配列とも呼ばれ、配列でありながら、任意のオブジェクト(キー)から任意のオブジェクト(値)を関連づけて配列を生成することができます。## hashの使い方
生成の基本は `変数名 = { “キー” => “値”}`として生成します。
`{}`でhashを生成するのを覚えておきます。“`ruby
p user = { “name” => “Jone”, “sex” =>”men”, “age” => 23 }
# => {“name”=>”Jone”, “sex”=>”men”, “age”=>23}
“`取り出しや変更も可能です。
変数名に対して`[]`をつけて、その中に定義してある`key`を書くだけです。
valueを変更したければ、`変数名[key]`に`=`で代入の形をとります。“`ruby
p user[“name”] #=> “Jon”
user[“age”] = 34
p user[“age”
Ruby3.0にアップデートする時、sorted_setをインストールする前に確認してほしいこと
唐突ですが、Rubyでは2.7から3.0へアップデートされる時、SortedSetというライブラリはGemに分離されました。
https://github.com/ruby/ruby/blob/v3_0_0/NEWS.md#compatibility-issues
“`
SortedSet has been removed for dependency and performance reasons.
“`「なるほど、じゃあRuby3に上げる時にSortedSetを使っていたらインストールすればいいんだな!」となるかもしれませんが、それはちょっと待ってほしいです(確かにそれでも動きますが)。
まずどこで使っているのかを、`git grep`なりエラーのスタックトレースなど適切な方法で確認しましょう。
もし自分が作成したコードで使っているのである場合、今回Gemへ分離されたのはパフォーマンスが理由なので、問題ない場合はインストールでも問題ありません(セキュリティなどだと話は変わりますが・・・)。ただ、他のGemが依存していて自分のコードでは使っていない場合は、GemのC
【個人開発】料理人のための仕込み管理アプリCucina-クッチーナ-を作りました
## はじめに
こんにちは!@harufumi03と申します。
この記事は初学者が初めて個人開発したWebアプリの紹介記事です。
ちなみに「クッチーナ」という名前はイタリア語で「キッチン」という意味です。アプリURL:http://cucina-app.com/
「仕込み」とは?…お客様に素早く料理を提供するための下準備のこと## 開発の経緯
私は調理師として働いていた経験があり、困り事がありました。
###### それは日常業務の「仕込み」についてです。
私の経験上「仕込み」を行う時は担当している仕込みを個人的に管理してホワイトボードやメモなどに書き出して管理していました。それにより他の人と使用する食材が重なってしまったり、気をつけていても忘れてしまって仕込みが出来ず、関連する料理の提供ができないという事もありました。この問題点をチーム内で共有して誰が何の仕込みをしてどの食材を使用するのか分かるようになれば解決できてお客様にも問題なく料理を提供できるのではないかと考え開発しようと考えました。
DDBJからsraをダウンロードするためのURLを列挙する
## はじめに
SRAをダウンロードする際には、[fasterq-dump](https://github.com/ncbi/sra-tools)などのツールがありますが、日本国内から利用する場合は、国内のDDBJのサーバーを利用することで、通信速度が速く、便利なことが多いです。しかし、ブラウザからダウンロードするためのURLを一つ一つ取得するのは手間がかかり面倒です。そこで、DDBJからSRAをダウンロードするためのURLをリストアップするスクリプトを書きました。
意外と需要のあるかもしれないのと、(あとでやり方を忘れてしまう可能性があるため)Qiita記事にしました。
## Requirements
スピナーを表示するために、tty-spinnerをインストールしておく必要があります。
“`
gem install tty-spinner
“`## スクリプト
下記のスクリプトをパスの通っている場所に保存し実行権限をつけておきます。 `sudo chmod +x ./ddbj_sra_urls.rb`
“`ruby:ddbj_sra_urls.rb
#!
メソッドについて
Rubyとは
日本人が作ったプログラミング言語で初心者の方にも分かりやすい言語になっています!
できる事は主にWebアプリ制作になります!
Webアプリとはアマゾンや、食べログなどインターネット上で使うシステムの事です!メソッド(関数)を出力
メソッド(関数)とは、プログラムの別の場所から呼び出せる処理のまとまりの事です。
メソッドは呼び出されるまで、実行されません。“`ruby:paiza.io
#engineerがメソッド名
#userが引数
def engineer(user)
puts “#{user}は基礎を学んでます” #defからendまでメソッド
endp engineer(“西野”) #引数=”西野”
“`
⇓“`ruby:出力結果
西野は基礎を学んでます
“`– defは、メソッドを作る時に行われて、engineerはメソッド名になります。
– カッコの中(user)は**引数**と言い
オブジェクト指向について
オブジェクト指向とは
オブジェクト指向とは、プログラムを構成するための考え方です。
オブジェクト(もの)同士の相互作用とみなします。– リモコンでテレビを操作するイメージ
– 自動車というオブジェクトを作りたい場合、ガソリンやブレーキなどの要素が必要です。また、具体的にどのタイミングでブレーキをかけるか、どれくらいの速度で構成するのか、などの命令を加えることで、「モノを動かす」ことができます。Rubyのオブジェクト指向
Rubyはオブジェクト指向型の言語です。
– 「従来の複雑で難しいプログラミング言語を効率的なソフトウェア開発のために考えられた概念」となります。
– 「モノ」のことでさまざまな複雑なデータを1つのモノとし、複雑なプログラミングをオブジェクトにまとめた開発形式です。
Rubyにおけるオブジェクトの種類
Rubyのデータは、全てがオブジェクトです。オブジェクトにはさまざまな種類があります。代表的なものは以下の通りです。
– 数値オブジェクト
– 文字列オブジェクト
– 配列オブジェクト
– ハッシュオ
[初心者向け]rubyで作る改札機プログラム問題(Minitest + オブジェクト指向)
# 初めに
オブジェクト指向の勉強 + テストコードの勉強で作成しました。
かなり拙いですが、多めに見てください!
[プロを目指す人のためのRuby入門](https://amzn.to/3GH3jqq)を読んで、自分でロジックを実装したくなったので作成しました!
私のコードは酷いので、興味を持たれたら、伊藤さんの素晴らしいコードを読んでください。
[お手本](https://github.com/JunichiIto/ruby-book-codes/blob/for-ruby-3-0/sample-codes/chapter_07/code_7.04.04.rb)# 本コードのリポジトリ
https://github.com/syo-tokeshi/cherry-ruby/tree/master/7# 仕様
1. あなたは好きな駅から搭乗します
1. 行き先は新宿か渋谷のみとします
1. 駅に乗る前にチケットを買います
1. 買ったチケットで、改札口を通ります
1. 目的地に着いたら、改札口でチケットを通して、
・ 最初に決めた行き先と同じ駅なら降りれる
という仕様にしま
Rubyでの終了判定処理
paiza様の問題集の課題から記事にします。
>2 以上の整数N, Kが与えられます。
>「Nを 2 倍した数でNを更新する」という操作を何度か繰り返すことを考えます。
>このとき, ちょうどある回数 M で N の値は K 以上になります。この時点で操作の繰り返しを終>了することにします。ただし100回を超えることはできません。Rubyで書いたコードです
“`Ruby
#標準入力
input_line = gets
#文字列を「 」で区切って配列に格納する
array1 = input_line.split(‘ ‘)
#与えられた数
n = array1[0].to_i
#超えてはいけない数
k = array1[1].to_i
#回数
s = 0
#最大計算できる回数
c = 100
#ループ処理
for i in 1..c
#NがK以上になったらループを抜ける
if n >= k then
break
MySQL カラム エラー
# はじめに
deviseを用いてユーザー管理機能の実装中にエラーが発生しました。# エラー内容
`migrateファイル`にてテーブル作成中。
↓以下のようにカラムの設定を実装した。
~~~ruby
create_table :users do |t|
## Database authenticatable
t.string :email, null: false, default: “”
t.string :encrypted_password, null: false, default: “”
t.string :name, null: false, default: “”
t.text :profile, null: false, default: “”
t.text :occupation, null: false, default: “”
t.text :position,
【Ruby】reduceメソッド(injectメソッド)の簡単なまとめ
使い所が掴めなかったので、簡単にreduceメソッドについてまとめます。
別名でinjectメソッドとしても使えますが、今回はreduceメソッドとして統一しておきます。# reduceメソッドとは
たたみ込み演算を行うメソッドです。
初期値と最初の要素をブロックに渡して実行します。# 使い方
先頭の要素と引数の値をブロック内で処理して、繰り返し処理することで結果を返します。
“`ruby
p [2,3,4,5].reduce(0) { |sum, i| sum + i } #=> 14
“`
この場合では、sumに引数の`0`が入り、iに最初の要素`2`が入ります。
その後、sumに最初の処理した結果が入り、iには次の要素`3`が入ります。
これを繰り返すことで結果の`14`が出力されます。“`
((((2) +3) +4) +5)
“`
というイメージです。また、初期値が`0`である場合は省略が可能です。
※追加
>初期値が0の時は少し挙動が異なります。
最初に先頭の要素と 2 番目の要素をブロックに渡します。
詳しくは@nodai2h_ITCさんのコメ
Rails(Ruby)でPDFを作成、圧縮、S3にアップロード
# TL;DR
“`rb
# PDFをインラインで作成
require ‘wicked_pdf’
pdf = WickedPdf.new.pdf_from_string(
“Lorem ipsum ロレム・イプサム 呂礼無・維風沙夢” * 500,
return_file: true,
)# Tempfileの作成&圧縮
require ‘tempfile’
require ‘zlib’tf = Tempfile.open([‘foo’, ‘.pdf.gz’], binmode: true)
Zlib::GzipWriter.wrap(tf, Zlib::BEST_COMPRESSION) do |gz|
gz.print(pdf)
end# AWS S3アップロード
require ‘aws-sdk’client = Aws::S3::Client.new(
access_key_id: ENV[‘AWS_ACCESS_KEY_ID’],
secret_access_key: ENV[‘AWS_SECRET_KEY_ID’],
regi
Rails学び まとめ(どんどん追記していきます)
新しい環境で仕事を始めてみて、学生時代ぶりにRails, Ruby, MySQLを触ったので、学習メモとして雑多に残す。
元々はJavaを使っていたのと、業務内容は運用だったので、そもそも開発をあまりしていない状態だったので、新しい発見が多い。## Ruby and Rails
– [Struct](https://qiita.com/k-penguin-sato/items/54189d5ed4e5f7463266)
– RubyにおけるStruct(構造体クラス)は簡易的なクラスのようなもの
– 利用ケース
– まとまったデータを扱いたいが、クラスを作るまでもない場合。
– クラス内で特定のデータのまとまりを表現する場合。
– 通常のクラスとの違い
– 継承、メンバの追加・削除ができない。
– 明示的にアクセスメソッドを定義しなくても、構造体クラス外でメンバの参照・更新が可能。
– scope
– データアクセスの際の条件式に名前をつけて、メソッドチェーンみたいな感じで繋げてかける。
作曲サークル内に音楽配信サービスを作った
## はじめに
本記事ではコサメガが作成した作曲サークル内音楽配信サービス「Kitchotify」について、作成動機、サービス概要などを説明します。ソースコードをGitHubで公開しています。https://github.com/kosamega/Kitchotify_app
## 作成の動機
### サークルの状況
私が所属している作曲サークルでは、2ヶ月に1回会員達がオリジナル曲を提出し、提出された曲を皆で聴き、提出された曲でアルバムを作ってデジタルリリースしています。またコロナ以降全ての活動が基本的にオンラインで行われています。
### 問題
コロナ以降全体的にコミュニケーションが減っていたこともあり、会員がそれぞれの曲を1度聴いてそれで終わりという状況がありました。お互いの曲をじっくり聴いて感想・アドバイスを言い合うことや、軽く感想を言い合うことなどは、曲作りがうまくなるために、また会員同士の仲を深めるために重要なことなので解決したいと考えていました。
### 解決策
提出された曲を聴きにくいことが原因であると考え、会員の作った曲が聴きやすくなるサービスを作りまし