Ruby関連のことを調べてみた2021年01月06日

Ruby関連のことを調べてみた2021年01月06日

[Gem不要!!HTML&CSSのみ]初心者が簡単にドロップダウンメニューを作成する方法

# はじめに

ハンバーガーメニューやドロップダウンメニューの作成をしたいけど、***Gem導入***の方法がよくわからない・***JavaScript***は思うようにいかない。
そんな初心者の方におすすめの記事なっております。

#開発環境

・Rails6.0.0
・MySQL5.6.50

#ドロップダウンメニューの実装

早速ドロップダウンメニューの実装の方法の流れを解説します。
ちなみにドロップダウンメニューとは以下のようなメニューのことです。

![f15d1dda5826200510a6a8d6eabad639.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/879778/211ef73d-4f93-8c43-3268-6257cedf664e.png)

「…」 を押すとメニューが表示されるものです。

よく見かけますが、JavaScriptでやるには面倒だし、Bootstrap導入のためにGemやjQueryを導入したりするのは初心者には中々ハードルが高めかなと思います。

それで

元記事を表示

rbenvでRubyのバージョンが切り替わらないときの対応

rbenvでRubyのバージョンが切り替わらなかったので、それのメモです。

# 事象
rbenvでバージョンを切り替えても変わりません

“`bash
$ rbenv versions
system
2.6.6
* 2.7.1 (set by RBENV_VERSION environment variable)
$ rbenv global 2.6.6
$ rbenv versions
system
2.6.6
* 2.7.1 (set by RBENV_VERSION environment variable)
“`

# やったこと
`set by RBENV_VERSION environment variable`と言われているのですが、特にどこにも書いていません。
また`.zshrc`で`export RBENV_VERSION=2.6.6`をすると、rbenvのversionはうまく変更されますが、
rubyのバージョンを確認しようとするとエラーになります。

“`bash
$ rbenv versions
system
* 2.6.6 (

元記事を表示

ssh先 & dirを指定→pecoで選んだfileをscpする

## 動作環境
– pecoが入ってる
– rubyが入ってる
– 他にもあるかも

“`zsh
function scp_file {
ssh -qt $1 “QUOTING_STYLE=literal ls -1 $2” > /tmp/lsfiles

# peco で選択した文字列をrubyに渡してshell safeにする
valid_file_name=$(cat /tmp/lsfiles | peco | ruby -rshellwords -e “print(Shellwords.escape(gets.chomp))”)

# sshに使うユーザー名を取る
ssh_user_name=$(ssh -G $1 | grep “user ” | awk ‘{print $2}’)

scp $ssh_user_name@$1:”$2/$valid_file_name” $3
}
“`

`scp_file remove_host_name remote_host_path client_path`
で実行可能。

##

元記事を表示

Rubyによるデザインパターンを読んでいく

# 第1章 よいプログラムとパターン
## パターンのためのパターン

[Gofのデザインパターン](https://ja.wikipedia.org/wiki/%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3_(%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2))のアイデアを要約すると、次の4つのポイントになる。

### 1. 変わるものより変わらないものから分離する

ソフトウェア開発における全ての変更は局所的なので、全てのコードをくまなく調べる必要がないようにすべき。

### 2. インターフェイスに対してプログラムし、実装に対して行わない

ここでのインターフェイスとは、JavaやC#における抽象インターフェイスではなく、可能な限り一般的な型のことを指す。

例) 飛行機、電車、自動車 に対する 「乗り物」

インターフェイスに対するプログラミングの結果、
結合度が下がり、少しのクラスの変更だけで済む、変更に対して強いコ

元記事を表示

【Ruby初学者に向けた】 Ruby 技術者認定試験 Silver/Gold 受験記

初版公開:2021/01/05
#概要
先日Ruby 技術者認定試験を受験し、Silver/Gold共に合格しました。(Silver:84点/Gold:94点)
合格にあたり、先人たちのQiita記事に大変お世話になったので、私も誰かの参考になればという気持ちから記事にまとめておきます。

#著者の受験背景
現在私は社会人ではありますが、Ruby更にはプログラミングの仕事にはついてはおりません。
(仕事でプログラムを書くことはほぼありません。)
また、Rubyに初めて触れたのも2020年8月ごろです。(2021年1月本記事執筆)
個人的には将来的な(転職を含めた)キャリアアップに繋がればと思い受験しました。

以上の背景から、本記事はRuby初学者の方へ向けての受験記としています。
初学習から技術者認定試験を受験しSilver/Goldの資格を取得するための参考にしていただければ幸いです。

#Rubyの初学習
###【準備するもの】
Ruby:技術者認定試験の対象verが2.1です。最新のRubyのDLで問題ありません。
テキストエディタ:なんでも良いですが、著者はVScodeを利用

元記事を表示

putsとprintの違い

Progateでpythonの勉強をし始めたら、「print」というのが出てきた。
python特有の物かと思ったら、Rubyでも普通にあるみたいで。。知らなかった・・!
自分用のメモとして記録しておく。

■主な違い
・改行するかしないか

puts→出力後改行
print→出力後改行しない

元記事を表示

Ruby:クラスメソッドとインスタンスメソッド、クラス変数とインスタンス変数の違い

##クラスメソッドとインスタンスメソッドの違い
まずRubyのクラスメソッドとインスタンスメソッドの違いを見ていきます。

###クラスメソッドとは
クラスメソッドを定義したクラス自身が使用できます。クラスで共通の情報を使った処理に使用します。インスタンスがなくても呼び出すことができます。

クラスメソッドを定義する際は、`self.メソッド名`と記述します。以下のようにクラス名`Fruits`から呼ぶことができます。また、インスタンスを生成する`new`メソッドは、代表的なクラスメソッドです。

“`fruits.ruby
calss Fruits
def self.call #selfはクラス自身を指す
puts “クラスメソッドを呼び出しました”
end
end

Fruits.new #newメソッドもクラスメソッドの1つ。
Fruits.call
“`

ターミナルで上記のrubyファイルを実行すると次のような結果になります。

“`:ターミナル
ruby fruits.rb

クラスメソッドを呼び出しました
“`
Fruits.callの実行結果が

元記事を表示

【初学者必見】Railsで「複数のカラムからの」検索機能を実装してみた。

### はじめに
あけましておめでとうございます?
Railsで定番の検索機能。
検索機能に関しての記事はQiita上でもたくさんあるが、どれも**一つのテーブル**の中の**一つのカラム**から検索する方法ばかり。(あとは、もう古くなったform_tagが使われていたり)
でも実際は**一つのテーブル**の中の**複数のカラム**から検索したいケースもあるはず。
例えば、

“`ruby:db/schema.rb
ActiveRecord::Schema.define(version: 2020_12_18_025546) do

create_table “agents”, options: “ENGINE=InnoDB DEFAULT CHARSET=utf8”, force: :cascade do |t|
t.string “last_name”, null: false
t.string “first_name”, null: false
t.string “last_name_kana”, null: false
t.string “

元記事を表示

google recruit

\![Mac OS X-10.15.7]() \![ruby-2.7.1p83$]()

# 課題

授業の最終課題でgoogle recruit の課題が出たのでやってみた.

– e(自然対数の底)の値で連続する10桁の数のうち,最初の素数を求めよ

# 作成したプログラム

“`ruby
# coding: utf-8
require “prime”

def check_prime(num)
return Prime.prime?(num)
end

def make_num
e = “2.71828182845904523536028747135266249775724709369995957496696762772407663035354759457\
1382178525166427427466391932003059921817

元記事を表示

第11回 :: ruby_VI(hello class)

\![Mac OS X-10.15.7]() \![ruby-2.7.1p83$]()

# お題:class化

Rubyでclass化の方法を学ぶ.

# 解法:最初のclass

前にやったhello.rbを少し拡張したバージョンを下記に記載.

“`ruby
def puts_hello name
puts “Hello #{name}.”
end

def gets_name
name = ARGV[0] || ‘world’
return name
end

name = gets_name
puts_hello name
“`

上記のコードに対して,Hello Classを定義してclass化を行う.

# Class化したコード

“`ruby
class Greeter
def initialize
@na

元記事を表示

第10回 :: ruby_fifth

\![Mac OS X-10.15.7]() \![ruby-2.7.1p83$]()

# お題:Fibonacci数列

fib(n) = fib(n-1)+fib(n-2)
0 1 1 2 3 5 8 13 21 …

をrecursion(再帰)で求める.

# 解説

前回の講義で作成した作ったassert\_equal.rbをcodes(作業directory)にcopyしておくこと.

# fib(0) = 0

Fibonacci数列の初項は0.

“`ruby
def fib(n)
if n==0
return 0
end
end

p fib(0)
“`

前回作成したassert\_equalを用いて出力ために

“`ruby
require ‘./assert_equal’

def fib

元記事を表示

第9回 :: assert_equal

\![Mac OS X-10.15.7]() \![ruby-2.7.1p83$]()

# お題:assert\_equal

assert equalとはequalかどうかを確かめる(assert)関数

# 解法

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

p assert_equal(1, 1)
“`

上記のコードを実行すると

> ruby assert_equal.rb
true

ちゃんとtrueが返ってくる

# 解説:colorize

出力の文字に色を付ける

初めにcolorizeっていうのをインストールする必要があるらしい以下のコマンドでインストール

> gem install colorize

元記事を表示

第8回 :: rake,ruby_fourth

\![Mac OS X-10.15.7]() \![ruby-2.7.1p83$]()

# rake

rakeとはmakeやantのruby版.rakeファイルに書かれていることを自動で処理する.

今までやったことなかったけど結構便利やった.

典型的な例は

“`ruby
task :default do
system ‘rake -T’
exit
end

desc ‘hello NAME’
task :hello do
name = ARGV[1]
puts “Hello #{name}!”
exit
end
“`

これをRakeファイルに入力

> rake

上記のようにコマンドを入力して実行すると,

rake hello # hello NAME

って出力される.

Rakeファイルの詳しい記述

元記事を表示

第7回 :: ruby_third

\![Mac OS X-10.15.7]() \![ruby-2.7.1p83$]()

# if-elsif-else-end

## お題

入力がうるう年(leap year)かどうかを表示するプログラムをかけ.

1. うるう年は4で割り切れる数の年.ただし,
2. 100で割り切れる年はうるう年でなく,
3. 400で割り切れる年はうるう年.
4. 2004, 1999, 1900, 2000で試せ.
5. それぞれtrue, false, false, true

## rubyのif

[オブジェクト指向スクリプト言語 Ruby リファレンスマニュアル](https://docs.ruby-lang.org/ja/index.html)

上記のサイトには以下のように書かれている

“`ruby
if 式 [then]
式 .

元記事を表示

第6回 :: ruby_second

\![Mac OS X-10.15.7]() \![ruby-2.7.1p83$]()

## variable and method

## variable

## お題

受け取った引数ARGV[0]をnameという変数(variable)に代入してそれを出力するコードを書く.

> ruby name_variable.rb Rudy
Rudy

こんな感じ

## rubyの変数

rubyの変数は型宣言の必要性がない.文脈に合わせて適当に型が定められる.

“`ruby
name = ‘Rudy’
“`

## 解法

下記のコマンドを入力してファイルを作成

> emacs name_variable.rb

emacsを起動

“`ruby
p “Rudy”
“`

と入力してsave.

> ru

元記事を表示

第5回 :: bash,ruby_first

\![Mac OS X-10.15.7]() \![ruby-2.7.1p83$]()

# hello worldの前に

[bash + emacs](https://qiita.com/daddygongon/items/3ab780f22e620c3f8298)

授業のページに飛びます

# puts hello\_world

# お題

Hello world.

と出力するプログラムを作る.

# rubyでStringsを打ち出す方法

どれを使ってもいい.

| method | 使用状況 |
|:——-|:————————————|
| print | 普通に使う.要改行 |
|

元記事を表示

README.org

\![Mac OS X-10.15.7]() \![ruby-2.7.1p83]()

この記事は講義「マルチスケールシミュレーション特論」に関する記事です。

なので、題名がおかしいところが多いですが気にしないでください。

# 最終課題

[google recruit](https://qiita.com/okamoto0910/items/fd64e778744f1aee715f)

# 第11回<2020-12-02 Wed>

[第11回授業まとめ](https://qiita.com/okamoto0910/items/743b434a2a72315bed4a)

# 第10回

元記事を表示

【Ruby】配列から重複していない要素を取得する

## 概要
配列内の重複していない要素を取得し、計算するというプログラムを書きました。
重複しているものがほしいときには比較演算子の記述を変更すれば取得することができます。認識に間違いがありましたらご指摘いただけたら幸いです。

## 目次

– 実践
– 問題
– 解答

– 参考文献

## 実践

#### 問題
>任意の3つの数値の合計を出力するメソッドを作成してください。ただし、同じ数が含まれている場合はカウントしない。

#### 解答
ハッシュを始めに生成しているのは、要素数を計算し、条件に合うものを `select` で取得したいからです。

“`ruby
def uniq_num(ary)
counts = Hash.new(0) # ハッシュを生成
ary.each { |v| counts[v] += 1 } # 重複している要素を検索
i = counts.select { |v, count| count == 1 }.keys # 重複して

元記事を表示

Herokuにデプロイしたのにうまく反映できない時

#はじめに
忘備録として記載します。

#結論
「Command+z」で戻りすぎていた。

#過程
デプロイした後、
heroku open
でブラウザを立ち上げたところ、なぜか反映されていない。
そこで、念のためローカルホストでまずは確認した。
すると、書いたはずのコードが消失していた。
「Command+z」で戻りすぎてしまい、消えたと思われる。

こんなミスで1時間もの間、Pushしたり、マイグレートしたりと不毛な時間を過ごしてしまったので、しっかり確認してから進めていこう。

元記事を表示

ruby 関数

# 関数の記述方法

“`ruby
def 関数名 (引数1, 引数2, …)
動作記述
end
“`

# assert\_equal

assert equalとはequalかどうかを確かめる(assert)

“`ruby
def assert_equal(expected , result)
if expected == result
puts ‘true’
else
puts ‘false’
end
end
if $PROGRAM_NAME == __FILE__
assert_equal(1,1)
assert_equal(1,2)
end
“`

# assert\_equal2

assert\_equalのプログラムを少し改良し, true時にcyanでfalse時にmagentaの色で出力する

プログラムは以下に示す

“`ruby
require ‘colorize’

def assert_equal(expected , result)
if expected == result
puts ‘t

元記事を表示

OTHERカテゴリの最新記事