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

Ruby関連のことを調べてみた2019年11月24日
目次

応用カリキュラム 08 データベース設計 02

## 中間テーブル

データベース設計においては、
エンティティ同士のリレーションをER図に表すが
中には、“`多対多“`のリレーションになるエンティティが出てくる。

そういったリレーションをデータベースで表現する場合は、“`中間テーブル“`というものを用いる。
エンティティ同士の組み合わせを記録するテーブルを作り
一対多の関係を経由することで、多対多のエンティティを繋げることができる。

railsにおいてA-B(多対多)のテーブルの間に中間テーブルを設ける場合は、

As_Bsテーブルとして、
その中間テーブルのアソシエーションは、
belongs_to :A
belongs_to :B
となって、

A,Bテーブルのアソシエーションは、
has_many :As_Bs
has_many :B, through: :As_Bs
となるみたい。

テーブル名は必須ではなく、適切な名前がなかった場合の慣例?っぽい。

テーブル定義を行う際は、“`制約“`と“`インデックス“`を想定しておくのを忘れずに!

元記事を表示

Excelって名前しか知らないPCに不慣れな感覚派22歳プログラミング完全未経験者がRubyを習得するまでの軌跡。Part3

実践編

progateのRubyのレッスンは全5章。高校以来こういう小難しいものとは無縁だったわたしからすると少々不安が多かったが実際はこんな感じだった

【3章】

最低限の用語

**メソッド**     モノに対する命令。〔♂←(壁ドンメソッドをプラグラム)→♂’♀|〕 例えば〈壁ドン〉と入力すると〔〕の中の一連の動作がポンッとでてくる
**引数**      名前からピンとこないけどメソッドに対する追加情報、メソッドに色がでる。上の例だと〔♂←(壁ドンメソッドをプラグラム)→♂’♀|〕 ←(引数)⇨〔♂←(壁ドンメソッドをプラグラム)→♂’♀|《(女子生徒A)(廊下)(ドン!って音)》〕 注意点はメソッドに引数を設定したら引数を渡さないとエラーになる。

**スコープ**     変数(引数とかも)の使える範囲。上の例だと壁ドンメソッドの引数(廊下)とか(ドン!)は壁ドンメソッドの中なら通じるけど他の朝食メソッドとかだったら、え!?何の音!?ってなるから使えない。
**戻り値**      数学みたいな言葉だけど簡単。壁ドンメソッドをした結果返ってくる返事。

元記事を表示

【Rspec】モックとスタブの違い

モック(mock)とスタブ(stub)の違いが分からないままなんとなく使っていたので、調べてみました。

## 先にざっくり結論
対象の処理をテストしたい場合はモック。テストしたいのは別の部分で、とりあえず値を返してくれればOKであればスタブを利用する。

## そもそもなぜ使うのか
Rspecなどを用いてテストを書く場合、APIなどを用いたHTTP通信をそのまま利用してしまうと、APIのタイムアウトなどが原因でテストが失敗になってしまう恐れがあります。これを防ぐために、APIなどの代わりに決まった結果を返すのがスタブやモックの役割です。

## 共通している部分
代わりに処理を返すことに関しては同じです。
– messageを受け取ったら、valueを返す処理

“`ruby
# create a double
obj = double()
# specify a return value
obj.should_receive(:message).and_return(:value)
“`
## モックとスタブの違い
違いは対象の処理をテストできるかどうかです。
モックの場合は対

元記事を表示

Railsで新たにアプリケーションを作成したらエラーがでた。

ターミナルでRubyonRailsで新しくアプリケーションを作成しようとした時、
以下のようなエラーが出ました。

“`
An error occurred while installing mysql2 (0.5.2), and Bundler cannot
continue.
Make sure that `gem install mysql2 -v ‘0.5.2’ –source ‘https://rubygems.org/’`
succeeds before bundling.

“`

以下のコードを書く事で解決しました。

“`
$ gem install mysql2 -v ‘0.5.2’ –source ‘https://rubygems.org/’ — –with-cppflags=-I/usr/local/opt/openssl/include –with-ldflags=-L/usr/local/opt/openssl/lib
$ cd ~/projects/【プロジェクトの名前】
$ bundle install
“`

ただし先程までちゃんと

元記事を表示

Railsでポートフォリオ作成のロードマップ – 初心者向け①

実際にRailsを使用されている方に、手取足取り教えていただきながらポートフォリオを作成しました。

備忘録として書き残します。

*この記事をお読みの皆様、特に初心者の方に少しでもお役に立てれば、という思いでこちらに書き残しております。
しかし、当方初心者であること、この記事が完璧ではないことを前提にお読みいただければと存じますm(_ _)m

0.ポートフォリオの構想

google driveを使用して、どんなポートフォリオを作りたいか、ざっくり言語化しました。

https://www.google.com/drive/

![スクリーンショット 2019-11-23 18.31.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/434847/137351c1-96c8-44c6-919a-6193eb5b304c.png)
![スクリーンショット 2019-11-23 18.34.31.png](https://qiita-image-store.s3.ap-northeast-1.ama

元記事を表示

【未経験】Railsチュートリアルを終えた独学者のための、Railsオリジナルアプリの作り方

#はじめに

この記事は

『**Railsチュートリアルを7割程度理解できたが、オリジナルアプリの作り方がわからない**』

という方を対象にしています。

特に、**スクールに通わずに独学している方**の助けになれば幸いです。
(あくまでも個人の意見ですので必要な部分だけ抜き取ってください)

##自己紹介
– 年齢:24歳
– 学歴:文系大学卒
– 職歴:専門商社営業(1年で退職)
– プログラミング経験:約7ヶ月(独学)
– ポートフォリオ:[Elily(イラスト投稿アプリ)](https://elily.herokuapp.com/)
– GitHub:[ここ](https://github.com/neneti/Elily)

現在web系自社サービスを展開している企業を中心に転職活動中。
面接時にポートフォリオを評価されることが多かったです。

それでは本題へいきましょう。

#Railsチュートリアルを終えてからオリジナルアプリが作れない理由

それは、**どこから手をつければいいのかわからない**からです。

私自身オリジナルアプリを作ろうとしたと

元記事を表示

Rubyの基本箇所についての復習⑤(配列)

#はじめに
[前回の記事](https://qiita.com/Moon1126Snow/items/d88f1021bc3c6c75a194)でハッシュオブジェクトについて解説しましたが、今回は似たような概念である***配列***についてお話します。
#内容
まず復習ですが、ハッシュオブジェクトは次の様に書きます。

“`ruby
member1 = {name: “田中”, age: 20, hoby: “読書”}
member2 = {name: “佐藤”, age: 25, hoby: “スポーツ”}
member3 = {name: “鈴木”, age: 30, hoby: “料理”}
“`

ここで例えば「田中さんは20歳で読書が趣味です」と出力したい場合は、

“`ruby
puts “#{member1[:name]}さんは#{member1[:age]}歳で#{member1[:hoby]}が趣味です”
“`

とすれば良かったのでした。

今の書き方だと、例えばmember100まで定義した場合に、コードが煩雑になる恐れがあります。
そこで***配列***を

元記事を表示

【Guard】自動生成されるGuardfileで監視・実行されるファイルは結局どこなのか、ソースコードから読み解いてみた

## はじめに
RailsアプリでRSpecを自動で走らせるためにGuardを導入したのですが、その設定ファイルである`Guardfile`について理解を深めたかったのでまとめてみました。

踏み込んでいくうちにソースコードまで読むことになり、メタプログラミングの勉強にもなりました。

この理解で`guard-rspec`や`guard-rubocop`で自動生成される内容にアレンジが加えられるようになったので、生産性が上がりそうです:point_up:

ベースとして、こちらの記事を参考にさせて頂きました。
[rubyのGuardとRSpecをRailsを使わない環境でつかう | 大石制作ブログ](https://blog.s0014.com/posts/2017-05-24-guard/)

## この記事が役に立つ方
– 自動生成されるGuardfileを自分ではアレンジ出来ない方

## この記事のメリット
– 自動生成されるGuardfileではどういう設定がされているのかが分かる
– Guardfileを自分用にアレンジ出来るようになる。

## 環境
– macOS Mo

元記事を表示

【Rails】パーシャルを使う

# パーシャルのメリット
あちこちで使う部品を定義しておけば、
その部品を呼び出すだけで同じViewを出力できるようになる。

## パーシャルファイルの作成
viewディレクトリに作成
`_任意の名前.htil.erb` <=`_`先頭にアンダースコアをつける。 #### 繰り返し使用する部分テンプレート作成 ```form.html.erb <%= form_for @board do |f| %>

<%= f.label :name, '名前' %>
<%= f.text_field :name, class: 'form-control' %>
<%= f.label :title, 'タイトル' %>
<%= f.text_field :title, class: 'form-control' %>
VSCodeでRubyのコードを書いてデバッグするためにしたこと

# はじめに
この記事はrubyを学び始めて半年ほどの人間が書いたものです。
VSCode上でrubyのコードの編集、デバッグをするためにしたことを書いています。
# 環境
記事の内容について以下の環境で動作確認しています
macOS Catalina バージョン: 10.15.1
Visual Studio Code バージョン: 1.40.1
# 手順
1. rbenvをインストールする
2. rbenvを使ってrubyをインストールする
3. Bundlerをインストールする
4. debase (rubyのデバッガ) をインストールする
5. ruby-debug-ideをインストールする (debaseとVSCodeを連携できるようにする)
6. VSCodeにrubyの拡張機能を追加する

## 1. rbenvをインストールする
rubyのバージョンを切り替えられるようにするためにrbenvをインストールします。
ターミナルを開いて以下のコマンドを実行します。

“`bash:
$ brew install rbenv
“`

rbenvコマンドが使えればインストー

元記事を表示

Excelって名前しか知らないPCに不慣れな感覚派22歳プログラミング完全未経験者がRubyを習得するまでの軌跡。Part2

実践編
—–
progateのRubyのレッスンは全5章。高校以来こういう小難しいものとは無縁だったわたしからすると少々不安が多かったが実際はこんな感じだった。

【1章】 スライドと説明を見れば自分で答えを考えてスルスルっと正解してサクサク進める。
—————————————————————————–
最低限の用語
———-
文字列   (”文字列”) (”)で囲んだ言葉、数字のこと 囲まないとプログラミングされちゃう。
コメント   (#)をつけると1行だけその後ろは全てプログラミングとは関係ないメモ帳にできる 応援メッセージやそのときの気分を書くのに使える。
計算記号   普段の日常通り。 (%)はあまり馴染みがないから注意割り算したときの余り。
変数      箱。一つ厄介なのは大きさがミニマムな時もあればハッシュが入るくらい大きい時もありサイズの概念がない?
要素     なにかすごい大切ななにかのように感じるが見かけだけ。要は箱(変数)の中身
比較

元記事を表示

プログラミング学習5日目

今現在わからないことについて

ruby on railsの
バグ修正の問題で、
何が原因か判断できない。

その理由はMVCの流れを理解できていないから。
細かいルール(どのように記述するかなど)

改善策としては、
これから先の練習問題をときつつ
どんなバグが多いのか体感して行く。

それで自分の理解できていない部分を
細かく洗い出す&よく出るバグの修正を重点的に出来るようにする。

今やるべきことは
問題をといて、自分の苦手を知ること。
どんなバグが多いのか知ること。

わからないことは人に聞くこと。ぐぐること。以上!

元記事を表示

5日目の午後。

今日学んだことは
ハッシュ、引数、バグ修正の考え方。

ハッシュについてわからないことが多かったので、すっきりした。

ハッシュとは箱であり、配列にきれいに並んで入っている。
一つ一つに番号がある。
ハッシュから取り出すには、
ハッシュ名[:キー名]
ハッシュに入れるには
ハッシュ名[:キー名]=バリュー名

である。

元記事を表示

ヌジョレーボーボー

“`ruby
puts [‘ボ’, ‘ジョ’, ‘レ’, ‘ヌ’, ‘ボ’].shuffle.map.with_index {|x, i| i > 1 ? x+’ー’ : x}.join
“`

Ruby はこういうの書くのが簡単でいいですね。

元記事を表示

if・unlessを一行で

後置なんちゃらというやつです。
処理を先に、条件式を後ろにすることでスマートに書けます。

#後置if

“`ruby
num = 1
puts “0より大きいよ!” if num > 0
“`

#後置unless

“`ruby
num = 1
puts “0じゃないよ!” unless num == 0
“`

it’sスマート!
ただし、条件式が複雑な時は普通の方を使いましょう。

ではまた!

元記事を表示

やさしい図解で学ぶ モデル マイグレーション その1

今回は[やさしい図解で学ぶ 中間テーブル  概念編](https://qiita.com/ramuneru/items/db43589551dd0c00fef9)のつづきとして、

実際に中間テーブルを作成するほか、モデルとマイグレーションについてRubyのフレームワークであるRailsを用いて学んでいきましょう。

## ⭐️テーブル作成に必要なファイル

DB設計が終わったら、
「DBのデータを取り扱うファイル = **モデル**」
「テーブルの設計図となるファイル = **マイグレーション**」を作らなければいけません。

まず、テーブル作成時にとりあえず必要なファイルは

Macでrbenvを使ってRubyとRailsをインストールする

# 環境

macOS Mojave 10.14

# 0. Homebrewをインストール

“`bash
$ /usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
“`

公式ページ(https://brew.sh/index_ja)

# 1. Rubyをインストール

### rbenvをインストール

Rubyのバージョン管理ツールであるrbenvとそれに必要なツールをインストールします。

“`bash
$ brew update
$ brew install rbenv ruby-build

$ echo ‘eval “$(rbenv init -)”‘ >> ~/.bash_profile
$ source ~/.bash_profile
“`

rbenvを最新版に更新します。

“`bash
$ brew upgrade rbenv
“`

rbenvをインストールできたか確認します。
バージョンが表示されれ

Ruby on Rails チュートリアル習得時の備忘録 (処理の流れ、MVC, Gem, bundler, フォルダ階層・・・)

Railsチュートリアルの冒頭で概念的な説明があまりなくQiitaの情報も断片的で
チュートリアルの理解に苦しんだため、自分なりに整理した資料です。
独学だとよくわからないコマンドを連打するよりざっくりまずは全体感を理解した方が頭の中にすんなり入るはずと思うのは私の気のせいですかね…

〜処理の流れ〜
Browser -> Route(config/routes.rb) <-> Controller <-> Model <-> Database
Browser <- View <-> Controller

〜MVCとは〜
model(s): データベースの操作
view(s): UI処理
controller(s): models, views の連携、
 viewsのディレクトリ名と結びつき、
 defで定義するアクションは
 viewsディレクトリ以下のファイル名と紐付き

rails 主要コマンド一覧: https://railsguides.jp/command_line.html
 ※コマンドが短縮されることがある generate が g

〜Gem, Gemを管理す

if文の書き方のまとめ(Scala、Java、Rust、C言語、C++、Go言語、PHP、Perl、Python、Ruby)

いろんな言語を触っていると、言語の重要な特徴はともかく、細かい文法や記号の使い方などがだんだんごっちゃになってきてしまいます。あれ、これってこの言語だとどう書くんだっけ?ってなることがよくあります。前はよく使っていた言語なのに、ちょっと離れただけでもう忘れてしまった、とショックに感じることもあります。なので、こういうメモを作っていこうと思います。

# Scala

“`scala
if (x >= 30) {
…;
} else if (x >= 0) {
…;
} else {
…;
}

// 文ではなく式
val max = if (a > b) a else b;
“`

– 条件式は論理値であることが必要
– C言語と同様に`{ }`の中の式が1つの場合は`{ }`を省略可能
– 文ではなく式

[Conditional Expressions – Expressions | Scala 2.13](https://scala-lang.org/files/archive/spec/2.13/06-expressions.html#c

railsでアプリ名を確認する方法

“`
# bundle exec rails c
Loading development environment (Rails 5.1.6)
“`

“`
> File.basename(Rails.root.to_s)
=> “server”
“`