- 0.0.1. Paiza D310:タイトルの略称 Rubyで
- 0.0.2. 【Ruby】多重代入を忘れないために
- 0.0.3. 【エラー】Mysql2::Error: Duplicate entry ” for key ‘items.index_items_on_email’
- 0.0.4. ソフトウェアデザイン10月号「コードがドキュメント」を地で行く開発スタイル の所感
- 0.0.5. 【Rails】rails db:resetとrails db:migrate:resetは何が違う?
- 0.0.6. Ruby on Railsの魅力を引き出す!ダックタイピングを使った柔軟な設計術
- 0.0.7. バリデーション 【備忘録】
- 0.0.8. 【Rails】render nothing: trueでエラーが出る
- 0.0.9. 【Ruby】instance_evalとclass_evalって何が違うんだヨォ…
- 0.0.10. 【Ruby】初学者向け-例外処理について
- 0.0.11. 【Ruby】初学者向け-モジュールとミックスインについて
- 0.0.12. 【Ruby】初学者向け-クラスの継承について
- 1. クラスの継承について
- 2. クラスメソッドについて
Paiza D310:タイトルの略称 Rubyで
apple
book
cakeという入力を受け取り、
abc
という出力を行う際のコード
“`
# 標準入力から単語を読み込み、最初の文字を連結する
result = []while line = gets
result << line[0] # 各行の最初の文字を取得 end puts result.join # 結果を出力 ``` 配列を宣言、ループ処理で入力を受け取り変数lineに代入、 result<
【Ruby】多重代入を忘れないために
# はじめに
こんにちは、絶賛Ruby勉強中のものです。
今回は多重代入について扱いたいと思います。
現在「たのしいRuby」を使用して勉強しているのですが、多重代入を勉強してこれはとても便利な一方アウトプットして定期的に目に入れないと忘れる…と感じたので、今回は気づきというよりは多重代入についてまとめた記事になります。# 多重代入の基本構文
Rubyでは多重代入を利用して、以下のように一行で複数の変数に値を代入することができます。
“`ruby:multiple_imputation1.rb
a, b, c = 1, 2, 3
p a # => 1
p b # => 2
p c # => 3
“`
`a`, `b`, `c`にそれぞれ`1`, `2`, `3`が代入されています。
本来であれば、多重代入を使用しないと以下のようなコードを書く必要があります
“`ruby:multiple_imputation2.rb
a = 1
b = 1
c = 1p a # => 1
p b # => 2
p c # => 3
“`
複数の変数に対して、対応する値をカン
【エラー】Mysql2::Error: Duplicate entry ” for key ‘items.index_items_on_email’
なぜか保存できません。
## エラー
“
ActiveRecord::RecordNotUnique in ItemsController#create
Mysql2::Error: Duplicate entry ” for key ‘items.index_items_on_email’
“コントローラーのクリエイトアクションが問題?
バリデーションの問題?
明日考えよう!!
ソフトウェアデザイン10月号「コードがドキュメント」を地で行く開発スタイル の所感
# はじめに
[ソフトウェアデザイン2024年10月号](https://gihyo.jp/magazine/SD/archive/2024/202410)を読んだ感想です。
著者の[伊藤淳一さん](https://blog.jnito.com)が働いている[株式会社ソニックガーデン](https://www.sonicgarden.jp/)では、納品のない受託開発という事業をやっています。タイトルに目が惹かれたのと、ドキュメントを作らない理由が興味深かったので皆さんに共有できれば、と思い書いています。:::note info
伊藤淳一さんが書かれたRubyの技術書「[プロを目指す人のためのRuby入門](https://gihyo.jp/book/2021/978-4-297-12437-3)」もわかりやすくてすごくお世話になったのでぜひ読んでみてください!
:::# 納品のない受託開発って?
多くの人がイメージする一般的な受託開発と異なり、継続的に週単位での打ち合わせと開発・リリースや運用保守を行う開発プロセスのことで、詳しくはソニックガーデンのコーポレートサイトを見ると良
【Rails】rails db:resetとrails db:migrate:resetは何が違う?
こんにちは!
今回は、rails db:reset と rails db:migrate:reset の違いについて書きます!
![banner.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3524120/83de7afc-66c8-8880-ad67-fd6231afad24.png)
# rails db:reset
* rails db:reset は、データベースを再作成し、シードファイルを読み込んでダミーデータを挿入します。テーブルは再作成され、既存のデータはすべて削除され、シードファイルを元に新しいデータが作成されます。
* ただし、rails db:reset はマイグレーションを実行しません。マイグレーションファイルの内容は反映されず、db/schema.rb に基づいてテーブルが再作成されます。# rails db:migrate:reset
* rails db:migrate:reset はデータベースを再作成し、テーブルのデータがすべて削除される点は rail
Ruby on Railsの魅力を引き出す!ダックタイピングを使った柔軟な設計術
## はじめに
**Ruby on Rails**の特徴の一つとして、**ダックタイピング**という柔軟な設計手法があります。Rubyは「もしそれがアヒルのように歩き、アヒルのように鳴くなら、それはアヒルだろう」というダックタイピングの概念に基づいて、クラスの型にとらわれない設計を可能にしています。この記事では、Railsでダックタイピングをどう活用するかについて解説し、より柔軟で再利用可能なコードを書くためのヒントを紹介します。
## ダックタイピングとは?
**ダックタイピング**とは、オブジェクトの型やクラスに依存するのではなく、**そのオブジェクトがどのようなメソッドを持っているか**に基づいて、オブジェクトを判断するプログラミング手法です。Rubyでは、オブジェクトのクラスや型を気にせずに、オブジェクトが適切なメソッドを持っている限り、そのオブジェクトを使うことができます。### 例:ダックタイピングの基本
“`ruby
class Dog
def speak
“Woof!”
end
endclass Cat
def speak
“
バリデーション 【備忘録】
### バリデーションの基本的な意味と初期設定について
“`
class User < ApplicationRecord devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable validates :nickname, presence: true #ニックネームの欄は要入力の意味 validates :email, presence: true, unique:true #以下説明 validates :encrypted_password, presence: true, #以下説明 end ``` validatable モジュールがデフォルトで**メールアドレス**の形式と存在をチェックするから記述不要。 validatable モジュールがデフォルトで**パスワード**の長さ(6文字以上)や存在をチェックする。
【Rails】render nothing: trueでエラーが出る
## 問題
コード
“`ruby
class UsersController < ApplicationController def index render :nothing => true, :status => 200
end
end
“`エラー文
“`ruby
ActionView::MissingTemplate
“`## 解決方法
以下のように修正します。
“`ruby
class UsersController < ApplicationController def index render body: nil, status: 200 end end ``` ## 参考 https://ponpoko-nalplus.hatenablog.com/entry/2019/02/27/175641
【Ruby】instance_evalとclass_evalって何が違うんだヨォ…
どうもこんにちは。
今回は、`instance_eval`と`class_eval`の違いがわからなかったので、調べました。
# そもそもこいつらいつ使う?
`instance_eval`と`class_eval`は、**動的にメソッドや属性を追加**したり、**クラスやインスタンスの内部状態に直接アクセスする**時に使用されます。
# Railsで使用することはある?
自分の感覚としては、Railsでアプリ開発を行う場合に`instance_eval`と`class_eval`は使用しないです。どちらかというと、Railsの内部動作に使用されているようです。
## 1. ActiveRecordでのclass_evalの使用
これが一番馴染み深いかもです。
Railsでデータを登録するときは、`User.name = ‘試験太郎’`というように記述したりします。
このコードが動作している背景として、`class_eval`が使用されているようです。“`rb
User.class_eval do
def name
# データベースから値を取得
en
【Ruby】初学者向け-例外処理について
## 例外処理について
本記事では例外処理についてまとめていきます。
※例外…プログラムの実行中に発生する異常やエラーのこと。### p
…例外オブジェクトの確認を行う### beginとrescueとensure
…beginブロック内で発生した例外をとらえ、適切に処理をするために
rescueブロックを用いる。ensureブロック内に記載された処理は
例外が発生してもしなくても実行される。
beginブロックで行った処理の後処理が必要な場合に用いられる。“`ruby:example_1.rb
begin
# 例外が発生する可能性のある処理
result = 10 / 0 # ゼロ除算が発生してエラーになるコード# rescue単体でも使用できるが、下記のように特定のエラーが発生した場合にも使用できる
rescue ZeroDivisionError => e
# 例外発生時の処理
puts “エラーが発生しました: #{e.message}”# 必
【Ruby】初学者向け-モジュールとミックスインについて
## モジュールとミックスインについて
本記事はモジュール・ミックスインについてまとめていきます。
### モジュール
…特定のメソッドをまとめておけるもの。
複数のクラスで使用する共通のメソッドをモジュールとして定義できる。モジュール内に書いたメソッドや定数は様々な箇所で使用できる“`ruby:example_1.rb
module TestModule
CONST_NUM = 100def const_num
CONST_NUM
end
end# モジュールへのアクセス方法1
puts TestModule::CONST_NUM
=>100# モジュールへのアクセス方法2
# include <モジュール名>を記述することで、モジュールに定義されたメソッドを関数のように呼び出すことができる
include TestModule# モジュールをincludeした後であれば、モジュール名を省略して定
【Ruby】初学者向け-クラスの継承について
本記事ではクラスの継承についてまとめていきます。
目次
・クラスの継承についてクラスの継承について
**クラスの継承**
…既存のクラスの機能を新しいクラスに引き継ぎ、再利用や拡張を行うための仕組み。
共通の機能を親クラス(スーパークラス)にまとめ、子クラス(サブクラス)に継承することができる。基本のクラス継承の書き方
“`ruby:example_1.rbclass <親クラス名>
# 親クラスの定義
endclass <子クラス名> < <親クラス名>
# 子クラスの定義
# 親クラスとファイルが別でもクラス継承の効果が作用する
end
“`
————————————————
継承の例
“`ruby:example_2.rb
class Cooking
def menu
puts “今日のご飯は#{@food}です”
end
endclass Food < Cooking def initializ
【Ruby】requireとrequire_relativeの違い
# はじめに
こんにちは、Ruby絶賛勉強中のものです。
「たのしいRuby」という書籍を使用して勉強しているのですが、そこで`require`と`require_relative`についての説明がありました
`require`は既存のライブラリを読み込むときに使用し、`require_relative`は相対パスの際に使用する旨が書いてありました。
外部ライブラリや絶対パスの場合について言及されていなかったので詳しく調べてみました。環境:`Ruby 3.3.5`
# `require`とは
`require` は、指定したライブラリやファイルを読み込む際に使います。
`require` を使う場合、通常はRubyのライブラリの検索パス (`$LOAD_PATH`(後に説明します) もしくは `$:` として参照される) から指定されたファイルを検索します。
また、ファイルパスは絶対パスまたは `$LOAD_PATH` に基づいて検索されます。続いてどのような場面で使用されるのでしょうか。
* Ruby標準ライブラリや、Gemなどの外部ライブ
【Ruby】初学者向け-メソッドの基本について③
【Ruby】初学者向け-メソッドの基本について②においては
Procオブジェクトやyield、クラス定義について記載していました。[https://qiita.com/y-kida/items/8fbbdedea8c7e7bd5530](url)
本記事ではその続きとして下記についてまとめていきます。
目次
・クラスメソッドについて
・クラス変数について
・クラスにおけるメソッド定義について
・破壊的メソッドについてクラスメソッドについて
**クラスメソッド**
…クラスそのものに対して定義されるメソッドのこと。
クラスからオブジェクトを生成せずにクラスに対してドット「.」をつけて呼び出すことができる。
通常のメソッド(インスタンスメソッド)はクラスから生成されたオブジェクトに対して
使用されるが、クラスメソッドはクラス自体に適用される。
オブジェクトをレシーバとする。
(例)新たにインスタンスを作成するnewメソッドなど——————————————————
Rails のコンソールで Unable to connect: Adaptive Server is unavailable or does not exist (ホスト名) (TinyTds::Error) がでる
## Unable to connect: Adaptive Server is unavailable or does not exist (ホスト名) (TinyTds::Error)が出てどうしようもない
Ruby・Rails で開発をしている時に、テスト用のDBサーバ(SQLServer)を使用していると、コンソールで上記のエラーが出たので共有します。
https://github.com/rails-sqlserver/tiny_tds/issues/218
上記のサイトでも似たようなエラーが見られますが、Azure を私は使っていないし、日本語じゃないしで全然わからなかったです。
しかし、IRB Codeのところを参考にして、
irb>require ‘tiny_tds’
irb> client = TinyTds::Client.new username: ‘ユーザ名’, password: ‘パスワード’, host: ‘ホスト名’, port: 1433, database: ‘DB名’
と叩くと、同じエラーが出ました。
その時に、テスト用のDBサーバが急に動
【Ruby】スクリプト言語とコンパイル言語
# はじめに
本日は前回のオブジェクト指向に続きスクリプト言語とコンパイル言語について説明していきたいと思います。
聞いたことはあったが具体的にそれが何を指すのかはまったくわかっていなかったので、ほかのタイプの言語の違いに触れながら説明していきます# スクリプト言語とは
プログラミング言語は大きく分けてスクリプト言語とコンパイル言語の2つに分けられます。
スクリプト言語とは、実行時に逐次的※に命令を処理する言語のことを指します。
※逐次的というのは順を追ってプログラムが実行されることを指します
`Ruby`や`Python`、`JavaScript`などが代表的なスクリプト言語です。
これらの言語はインタプリタと呼ばれるプログラムによって1行ずつ読み取られ、逐次実行されます。
スクリプト言語の特徴は以下の通りです。
* プログラムのソースコードが逐次的に解釈され、その場で実行するインタプリタ型を採用
* コンパイルを経ずにコードを書いてすぐに実行できるため、スクリプト言語は開発スピードが早い
* コードを実行しながら動作確認をしやすい環境(例: `Ruby`の`IRB`や`Pyth
💎 Rubyの基本
# はじめに
これはRuby言語について学習したことの記録です。# Rubyってどういう存在?
– オブジェクト指向言語(すべてがオブジェクトでできている)
– スクリプト言語(コンパイル抜きで実行できる)# Rubyファイルの実行
“`rb
ruby ファイル名.rb
“`# 外部ファイルの読み込み
“`rb
requre “ライブラリ名”
“`“`rb
# 自分で作ったファイルを読み込む
require “./ファイル名” # 拡張子「.rb」は省略可
“`“`rb
# Ex. 同じディレクトリ下にある「sample.rb」というファイルを読み込む場合
require “./sample”
“`# コメントアウト
“`rb
# 1行のコメントアウト=begin
複数行のコメントアウトはこうです。
ここに書いたことは実行されません。
=end# これでも
# いいです
“`# マジックコメント
プログラムの先頭行に入れたりする呪文。
“`rb
# frozen_string_literal: true
“`いか
【Ruby】変数や定数のスコープ範囲
変数や定数のスコープ範囲をまとめてみました。
### 変数のスコープ範囲
“`ruby
# 有効パターン1
x = 5
puts x # => 5# 有効パターン2
def number
n = 10
puts n
end
# メソッドの呼び出し
number # => 10# エラーパターン3
x = 5
def number
puts x
end
# メソッドの呼び出し
numser # => エラー# エラーパターン4
def number
n = 10
end
# numberメソッド内の変数nの呼び出し
puts n # => エラー
“`メソッドやブロック内で定義された変数は、メソッドやブロック内でしか使えなく、外部からのアクセスはできない。
—
### 定数のスコープ範囲
“`ruby
# 定数
MY_NUMBER = 100def number
puts MY_NUMBER
end
# メソッドの呼び出し
number # => 100
puts MY_NUMBER # => 100
“`定数はメソッドの外からもア
Ruby3.3.0のインストールのトラブルシュート
## 環境
Ubuntu20.4
Ruby3.3.0## 内容
rbenvを使って、Ruby3.3.0をインストールすると、エラーが出てきたので、そのトラブルシュートです。“`err.sh
$rbenv install -v 3.3.0
*** Following extensions are not compiled:
fiddle:
Could not be configured. It will not be installed.
/tmp/ruby-build.20240704151132.2566.Axj65T/ruby-3.3.0/ext/fiddle/extconf.rb:78: missing libffi. Please install libffi or use –with-libffi-source-dir with libffi source location.
Check ext/fiddle/mkmf.log for more details.
psych:
Could not be
【Ruby】オブジェクト指向とは
# はじめに
こんにちは、Ruby絶賛勉強中で本日から「たのしいRuby」を読み始めました。
その中でRubyはオブジェクト指向言語であると書いてありました。
オブジェクト指向って聞いたことあるけど、実際何なのか?と思って気になったので調べた内容を記事にまとめてみました。# オブジェクト指向とは
オブジェクト指向プログラミングとはデータとその操作を「オブジェクト」という単位でまとめる考え方に基づいています。
オブジェクトは、現実世界のモノや概念をプログラム内で再現し、データ(属性)とそれに対する操作(メソッド)を一つのまとまりとして扱います。
オブジェクト指向プログラミング以外には手続き型言語というものがあり、C言語やFortranがあります
もともとオブジェクト指向を知っている方でないとこの説明を聞いて、なるほどとはならないと思いますので具体例を挙げて説明していきたいと思います例えば、私たちが普段使っている「スマートフォン」をプログラムで表現したいとしましょう。
現実世界のスマートフォンの特徴をまとめるとすると
* メーカー(例:Apple、Samsung)
* モデル(例: