Ruby関連のことを調べてみた2020年11月21日

Ruby関連のことを調べてみた2020年11月21日

Railsを使ったToDoリストの作成(7.CRUDのDelete機能)

#概要
本記事は、初学者がRailsを使ってToDoリストを作成する過程を記したものです。
私と同じく初学者の方で、Railsのアウトプット段階でつまづいている方に向けて基礎の基礎を押さえた解説をしております。
抜け漏れや説明不足など多々あるとは思いますが、読んでくださった方にとって少しでも役に立つ記事であれば幸いです。

#環境
* `Homebrew: 2.5.10` -> MacOSのパッケージ管理ツール
* `ruby: 2.6.5p114` -> Ruby
* `Rails: 6.0.3.4` -> Rails
* `node: 14.3.0` -> Node.js
* `yarn: 1.22.10` -> JSのパッケージ管理ツール
* `Bundler: 2.1.4` -> gemのバージョン管理ツール

“`:iTerm
$ brew -v => Homebrew 2.5.10
$ ruby -v => ruby 2.6.5p114
$ rails -v => Rails 6.0.3.4
$ npm version => node: ‘14.3.0’
$ yarn –

元記事を表示

Railsを使ったToDoリストの作成(6.CRUDのUpdate機能)

#概要
本記事は、初学者がRailsを使ってToDoリストを作成する過程を記したものです。
私と同じく初学者の方で、Railsのアウトプット段階でつまづいている方に向けて基礎の基礎を押さえた解説をしております。
抜け漏れや説明不足など多々あるとは思いますが、読んでくださった方にとって少しでも役に立つ記事であれば幸いです。

#環境
* `Homebrew: 2.5.10` -> MacOSのパッケージ管理ツール
* `ruby: 2.6.5p114` -> Ruby
* `Rails: 6.0.3.4` -> Rails
* `node: 14.3.0` -> Node.js
* `yarn: 1.22.10` -> JSのパッケージ管理ツール
* `Bundler: 2.1.4` -> gemのバージョン管理ツール

“`:iTerm
$ brew -v => Homebrew 2.5.10
$ ruby -v => ruby 2.6.5p114
$ rails -v => Rails 6.0.3.4
$ npm version => node: ‘14.3.0’
$ yarn –

元記事を表示

【Rubyによるデザインパターン】コマンドパターンのメモ

#【Rubyによるデザインパターン】コマンドパターンのメモ

プログラムの設計力向上のため『Rubyによるデザインパターン』を読んでおり、気になるデザインパターンを、1つずつまとめています。

今回は、コマンドパターンについてまとめました。

[【Rubyによるデザインパターン】テンプレートメソッドパターンのメモ – Qiita] (https://qiita.com/yuki_0920/items/07382034dfb65f0a13a0)
[【Rubyによるデザインパターン】ファクトリーメソッドパターンのメモ – Qiita](https://qiita.com/yuki_0920/items/324c5536bf4e3d085f33)
[【Rubyによるデザインパターン】ストラテジーパターンのメモ – Qiita](https://qiita.com/yuki_0920/items/87dc056952f71b88a287)
[【Rubyによるデザインパターン】コマンドパターンのメモ – Qiita](https://qiita.com/yuki_0920/items/46545

元記事を表示

[Rails]hidden_fieldとhidden_field_tagの違いについて![初心者]

#どういう時に使用するの?
“form_with“や“form_for“を利用して、ユーザーに何かを打ち込んでもらい、送信してもらいたい時に便利なメソッドです。

例えば、AmazonのようなECサイトで、ショッピングカートの商品を購入するとき。
ユーザーからすると、「確定ボタン」だけ押したいのに、再度“username“や“address“を打たなければならないのは面倒ですよね。
また、パラメーターを経由したいけれども、ユーザー側にその情報を隠しておきたい時などにも使えます。

#使い方
““ruby:hidden_field
hidden_field :値の取得時に使用する名前(シンボル), :value => 実際に渡す値
#第一引数→name属性 #第二引数→value属性
““

アクションで“hidden_field“で渡されたパラメータを受け取ることが出来ます。
ここで、controllerに記述する際に、フォームフィールドに紐づく値となっている為、記述方法は
“par

元記事を表示

Assert&Rubular

# Document\_Links

– [チャート式ruby-IV(assert\_equal)](https://qiita.com/daddygongon/items/f6cea87314ee26e130ea)
– [チャート式ruby-appendix-V(rubular)](https://qiita.com/daddygongon/items/5e2de543400fe56be768)

# テスト駆動開発

## assert\_equal

とりあえず,equalかどうかを調べる関数を書いてみる.

“`ruby
def assert_equal(expected, result)
return expected == result
end

p assert_equal(1,1)
p assert_equal(1,2)
“`

これで,

$ ruby assert_equal.rb
true
false

となる.

## Colorize

trueとfalseは返すようになったが,パッと見で分かるようにしたい.

元記事を表示

ヘッダーが日本語の巨大CSVを取り込んでみる

CSVファイルの取り込みが必要とする場面はかなり頻繁に出ていると思います。しかし数百メガ以上ファイルサイズだとサーバーの処理に影響出かねなません。そして取り込まれるファイルのヘッダーが日本語だと、実装のハードルが格段上がると思います。

# TL;DR

Demo用のRuby fileは下記のURLで見れます。
https://gist.github.com/jerrywdlee/55ba403f02651afc67dbda8185329780

“`rb
# まずは日本語ヘッダーを英語に転換するlambdaを作成
headers_jp = %w[ID 名前 フリガナ 年齢 血液型 都道府県 携帯キャリア]
headers_en = %w[id name kana age blood state carrier]
headers_dict = headers_jp.zip(headers_en).to_h
converter = lambda { |h| headers_dict[h] }

# CSV.foreacで1行ずつ取り込む
CSV.foreach(path, header

元記事を表示

文字列を配列に入れる方法

##splitメソッド
文字列に使うことのできるメソッド。
文字列を分割して、配列に入れる事ができる。

“`ruby
str = “Ruby PHP”
ary = str.split(”) #何で区切るか
#=>ary = [“Ruby”,”PHP”]
“`
(”)空白で区切ったり、(,)カンマで区切ったりを引数で指定できる。

配列にすることで、使う事ができるメソッドが変わる。
`gets`で入力されたものを配列に入れるときにも使える。

元記事を表示

Railsを使ったToDoリストの作成(5.CRUDのCreate機能)

#概要
本記事は、初学者がRailsを使ってToDoリストを作成する過程を記したものです。
私と同じく初学者の方で、Railsのアウトプット段階でつまづいている方に向けて基礎の基礎を押さえた解説をしております。
抜け漏れや説明不足など多々あるとは思いますが、読んでくださった方にとって少しでも役に立つ記事であれば幸いです。

#環境
* `Homebrew: 2.5.10` -> MacOSのパッケージ管理ツール
* `ruby: 2.6.5p114` -> Ruby
* `Rails: 6.0.3.4` -> Rails
* `node: 14.3.0` -> Node.js
* `yarn: 1.22.10` -> JSのパッケージ管理ツール
* `Bundler: 2.1.4` -> gemのバージョン管理ツール

“`:iTerm
$ brew -v => Homebrew 2.5.10
$ ruby -v => ruby 2.6.5p114
$ rails -v => Rails 6.0.3.4
$ npm version => node: ‘14.3.0’
$ yarn –

元記事を表示

Python学習 基礎編 ~文字列を出力(表示)するには?~

こちらではPython学習の備忘録と、Ruby、JavaScriptとの比較も含め記載していきたいと思います。
プログラミング初心者や他の言語にも興味、関心をお持ちの方の参考になれば幸いです。

####文字を出力(表示)するには?
**共通部分**
文字列は、必ず半角の「”」シングルクォーテーション、または「””」ダブルクォーテーションのどちらかで囲む必要がある。
記述がない場合はエラーになるので注意!
#####Python

“`py:script.py

print(‘Hello World’)
“`

#####Ruby

“`ruby:index.rb
puts ‘Hello World’
“`
#####JavaScript

“`javascript:script.js
console.log(‘Hello World’);
“`
文の最後は「;」セミコロンで終わりにする。
* * *
#####Pythonにてクォーテーションの記述がなかった場合
“`
SyntaxError: invalid syntax
“`
「構文エラー:無効な構文」と

元記事を表示

AtCoder 茶色(400)になるまでにやったこと

こんにちは、yukad2です。
この記事では私がAtCoderでRating:400になるまでに勉強したことをまとめています。

# 0.初めてのコンテスト前
中学生の頃にC++ゲームプログラミングに挑戦しましたが、if, forが理解できる程度の知識でした。
大学1年で学習したRubyが(Cと比べて)非常に書きやすかったので、プログラミングの練習も兼ねて競技プログラミングを始めました。
1. [chokudaiさんの記事](http://chokudai.hatenablog.com/entry/2019/02/11/155904)を読んで、就活まで(2年以内)に緑~水色を目標にしました。
2. コードテストで入出力の確認をしました。
3. 過去問を何度か解きました。

# 1. コンテスト

1回目
3完 Perf:681
2回目
2完 Perf:244
3回目
2完 Perf:196

全然できない、と焦りを感じて過去問でアルゴリ

元記事を表示

【Rails5】check_boxで任意の文字列を渡す方法(ガチ初学者向け)

初投稿です。
初学者のため、参考程度に見ていただければ幸いです。

至らない点、わかりにくい点などあればコメントで教えていただければ幸いです。

#version
Ruby 2.5.7
Rails 5.2.4.4

#How to
まずチェックボックスフォーム機能を実装する際に、デファルトだとか機能ようなコードになると思います。(form_withを使う場合)

“`
<%= form_with model: 変数, url:遷移先のパス do |f| %>
<%= f.check_box :カラム名,{オプション(クラス名など} %> ←チェックボックスを表示
<%= f.submit %>
<% end %>
“`

このようにするとデフォルトで`”1″か”0″`が送られます。

“`
<%= form_with model: 変数, url:遷移先のパス do |f| %>
<%= f.check_box :カラム名, {オプション(クラス名など}, "true","fales" %> ←チェックボックスを表示
<%= f.submit %>
<%

元記事を表示

Kinx 実現技術 – JIT: sljit の使い方

# sljit の使い方

## はじめに

こんにちは。皆さん、お元気でしょうか。

今日は JIT Compiler の話です。Just In Time Compiler 技術です。技術の紹介をして皆の役に立とうという気持ちもありますが、半分は **自分のための備忘録** の意味もあります。なにせ、情報が少なくて元のソースコードを解析しながら使っているので。

Kinx では `native` 関数を定義できる機能があり、いわゆる JIT 実行させています。ここで Kinx って何?な方は下記をご参照ください。**「見た目は JavaScript、頭脳(中身)は Ruby、(安定感は AC/DC)」**で頑張っているアレです。

* 参考
* 最初の動機 … [スクリプト言語 KINX(ご紹介)](https://qiita.com/Kray-G/items/ca08b6fb40d15dd0ec76)
* 個別記事へのリンクは全てここに集約してあります。
* リポジトリ … [https://github.com/Kray-G/kinx](h

元記事を表示

rubyクラスを利用したアプリ

シンボルクラスとストリングクラスは同義と考える
hash = {“key” => “value”}
hash = {key: => “value”}

###教訓
1.`attr_accessor :id, :name, :content` クラス外から参照、編集するために必要な処理
2. `@@xxx`はクラス変数。クラスを使うたびに定義される
3. `@xxx`はインスタンス変数。インスタンス毎に定義される
4. `@tasks << task(TASKクラスを利用したインスタンス)`ではインスタンス変数に、`task(TASKクラスを利用したインスタンス)`を配列の要素として代入している。※ハッシュを代入していると思っており、ハッシュのメソッドを探していた。 5. initializeはインスタンス作成時に動作する(主に変数の初期値設定) 6. クラス毎に用途を分けた方が良い。今回なら、TASKクラスはタスクを保存するため用途。TODOクラスはtaskインスタンスを扱う用途。 ``` class Task # コードを追加 attr_accessor :id, :n

元記事を表示

[Rails]selfについての理解を深めたい[初心者]

#はじめに
プログラミングの超初心者です。
“self“への理解が全然できていないと感じたので、アウトプットも兼ねて、学んだことをまとめます!
それではいきましょう!!

#selfって何のこと?
“オブジェクトそのものを指す特殊な変数“です。

と、説明だけでは非常に分かりにくいですよね。
一緒に、どのように使用されているのか、確認していきましょう。

#使用例

“`ruby:book.rb
class Book < ActiveRecord::Base def hoge #インスタントメソッド end def self.hoge #クラスメソッド end def author #インスタントメソッド self.hoge #インスタンスメソッドのhogeが呼ばれる hoge #インスタンスメソッドのhogeが呼ばれる self.class.hoge end def self

元記事を表示

enumを使用して投稿の公開設定をする(二択式)

# はじめに
## やりたいこと
– 投稿機能に公開ステータスを持たせる
– デフォルトは非公開にする
– 公開設定をセレクトボタンで選択させる

## やってみて
enum自体は非常に奥が深いモジュールだと感じましたが、私がやりたいことは簡単に実装できました。
ですので、この投稿は初心者でもすぐに実践できる内容になっていると思います。

## 参考
[Rails公式リファレンス](https://api.rubyonrails.org/v5.2.3/classes/ActiveRecord/Enum.html)
[Pikawaka <【Rails】enumチュートリアル](https://pikawaka.com/rails/enum) # 手順 ## DB設計 ```ruby:db/migrate/create_item.rb class CreateItems < ActiveRecord::Migration[6.0] def change create_table :items do |t| t.string :title, nul

元記事を表示

【RSpec】letを使用するメリット

 最近、RSpecによるテストにおいて、インスタンス変数の代わりに「let」という機能を用いることができると知りました。

 そこで、自分もletを使ってみようと考えたのですが、
「letを使うとどんなメリットがあるの?」
という疑問が湧いたので、備忘録としてまとめることにしました。

 今回、参考にさせていただいた記事を一番下にまとめていますので、気になる方はそちらをご覧ください。

 同じような疑問を持っている方の参考になると幸いです。

# letの書き方
 先ほども書きましたが、テストにおいて、インスタンス変数を「let」に置き換えることができます。

今回はFactoryBotを使用している場合の書き方を紹介します。

“`ruby
#インスタンス変数を使用した場合
before do
@インスタンス変数名 = FactoryBot.create(:モデル名)
end

#↓以下のように書ける!

#letを使用した場合
let(:メソッド名) { FactoryBot.create(:モデル名) }
“`

# letを使用するメリットとは?

(以下の内容は、@j

元記事を表示

rubyzipでディレクトリが圧縮できない事がある不具合を解決する

Ruby on Rails でディレクトリをzipで圧縮しようとしたときに遭遇したエラーのお話です。
[rubyzip](https://github.com/rubyzip/rubyzip)というgemを使って実装する際、ディレクトリをzip圧縮する[サンプルスクリプト](https://github.com/rubyzip/rubyzip/blob/9d891f7353e66052283562d3e252fe380bb4b199/samples/example_recursive.rb)が含まれていたので、
その通り導入してみたのですが…

# サンプルスクリプトでは圧縮できなかった

大きく以下の問題でエラーが発生しました。(箇条書きですみません…)

1. 日本語のディレクトリ名を使った場合に文字化けする
2. ディレクトリの合計容量が大きかった場合に、処理が途中でコケる

# 調整後のスクリプト

“`ruby:zip_file_generator.rb
require ‘zip’

# This is a simple example which uses rub

元記事を表示

【Rails】ジャンル&商品名の検索機能実装

#前提
ジャンルの一覧表示の中で検索したいジャンルをクリック or 検索フォームに商品名を打ち込んで「検索」ボタンをクリックすることで、searchアクションを実行します。ジャンルor商品名の検索結果を遷移後のsearch.html.erbで表示するような機能を実装していきます。検索結果画面には、該当する商品のレコード内容(商品写真や商品名など)をeach文で表示する形になります。モデル同士のアソシエーションなどの部分は省いていきます。
通常の検索機能の実装がしたい方は[こちらを参考にしてください(gemなし複数モデル対象の検索機能)]
(https://qiita.com/IsakiMatsuo/items/69f406d85dbd0ba62625)

#####実装の条件、太文字は必須のカラムです(カラム名は違くても問題ありません、デフォルトでつくidカラムは一応記述しました)
・genresテーブル(PK:**id**、ジャンル名:**name**、ジャンル有効or無効:is_active(boolean))
・itemsテーブル(PK:**id**、ジャンルのid(FK):**

元記事を表示

【Ruby】バイナリーサーチを用いた配列内の要素検索

配列内に任意の値が存在するかを確認するプログラムを作成します。
任意の値が配列内に存在しない場合は、「値は配列内に存在しません」と表示し、存在する場合は、配列の何番目にあるかを表示します。

今回のプログラムではバイナリーサーチという、配列を2分割した検索方法を用います。
例えば以下のような配列がある場合、中央値である「3」から左右と比較して検索する手法です。
これにより検索したい値が「1」であった場合、「4,5」は比較を行わないため処理速度の向上につながります。

“`java:ruby
array = [1, 2, 3, 4, 5]
“`

## 回答例

“`java:ruby
def binary_search(array, number_of_elements, target)
left = 0 //配列の先頭の番号
right = number_of_elements – 1 //配列の末尾の番号
while left <= right //配列番号が逆転するまで繰り返し cente

元記事を表示

Ruby oci8 で k:v形式のArrayでレコード取得

# Ruby oci8 で oracle接続して各行のデータをk:v形式のArrayで取り出す話

“`ruby
#!/home/user/local/bin/ruby

require ‘oci8’
oracle = OCI8.new(‘id’,’pw’,’service’)
oracle.prefetch_rows = 100

result = []
sql = “select * from table_name”

oracle.exec(sql).fetch_hash(){|r| result << r.map{|colname,coldata| "#{colname} : #{coldata}"} } ``` `fetch_hash()`っていうふうに`()`を付けないとだめなのね。 レコードを普通にArrayで取り出したいときは`fetch()`。 oci8は癖があるな。mysql2のほうが扱いやすい。

元記事を表示

OTHERカテゴリの最新記事