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

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

【Rails】マイグレーションコマンドまとめ

# 開発環境
・Ruby: 2.5.7
・Rails: 5.2.4
・Vagrant: 2.2.7
・VirtualBox: 6.1
・OS: macOS Catalina

# マイグレーションコマンドの書き方

`$ rails g migration ChangeColumnToBooks` は、
`$ rails generation migration change_column_to_books` と書くのと同じ。

つまり、`generation`は`g`と略す事ができ、
`AddBodyToBooks`の様に、単語の先頭を大文字にする事で「 _ 」を書く手間が省ける。

# 基本コマンド

### 1.モデルとテーブルを作成

`$ rails g model モデル名 カラム名:型名`

“`terminal:ターミナル
$ rails g model Book title:string
“`

“`ruby:migrate/~_create_books.rb
class CreateBooks < ActiveRecord::Migration[5.2]

元記事を表示

【リファクタリング】ルーティングの書き方

# 概要
ルーティングをスッキリ書く方法です:relaxed:

**背景**
ルーティングの指定をする際、7つのアクションのうち6つを使用する場合、onlyで書いたらダラダラと長くなってしまって、個人的に自分ダサっ:weary:っとなったので備忘録として残します:bow_tone1:

# Railsの7つのアクション
まずは、Railsの7つのアクションについておさらい:writing_hand:

| Action | 役割 |
|:————:|:——————:|
| index | 一覧を表示する |
| new | 追加する |
| create | 追加内容を登録す |
| edit | 編集する |
| update | 編集内容を更新する |
| destroy | 削除する |
| show

元記事を表示

Railsチュートリアルで遭遇したテスト関連のバグ

Railsチュートリアルを勉強していて原因不明のバグに遭遇したので対処方法を記録しておきます。

# 環境
ホストマシン:macOS Catalina 10.15.4
関係してそうなGemのバージョン:

“`Gemfile
gem ‘rails’,  ‘6.0.3’
gem ‘spring’,  ‘2.1.0’
gem ‘rails-controller-testing’, ‘1.0.4’
gem ‘minitest’, ‘5.11.3’
“`

#エラー
###発生条件
詳細は不明ですが、いろいろなタイミングで発生しました。rails generateコマンドでControllerを作った後などに頻発。
###エラー内容
テストがGreenになるはずの状況でrails test コマンドでエラーが出る。しかもエラーの原因箇所を特定不能。
2000行以上にわたる大量のログ(おそらくGemのパスを示している)が吐かれたのちに以下のエラーメッセージ。

“`
[NOTE

元記事を表示

Rubyでチンチロゲームを作る  第4回 ゲーム進行の処理の作成

# 1. はじめに
 いよいよゲーム進行にかかわる処理を書いていきます。あらかじめ各メソッドを実装しているので、なにもない状態から書き始めるよりも楽にできるはずです。それではやってみましょう。

# 2. main.rbの作成

 各ファイルと同じフォルダに `main.rb`を作成します。まずは以下のように流れを書いてみましょう。

“`Ruby

# チンチロゲーム

# プレイヤーの作成

# —-決着が着くまでループ
#  賭け金の設定(自分)
#  賭け金の設定(相手)
#  サイコロを振る
#  役の決定
#  勝敗判定
#  賭け金の移動
# 最終的な勝敗判定
# —-決着が着くまでループ

“`

 ちょっとずつ付け足していきます。 `transfer_money.rb`は`player_class.rb`に変更しています。

“`ruby
require ‘./player_class’ # transfer_money.rbから変更
require ‘./dice_roll’
# チンチロゲーム

# プレイヤーの作成
player_A = Play

元記事を表示

【Rails5.2】RESTful APIをRailsで簡単に実装する手順(APIモード)

## 環境
ruby 2.6.4

Rails 5.2.4.1

rbenv 1.1.2

mysql2 0.5.3

## やりたいこと
APIモードで簡単なtodoアプリを実装します

RESTfulなAPIをRailsで実装する手順を書いていきます

わかりやすさを追求して書いていきます

## カンタン実装手順
### ステップ1. APIモードで新規アプリを作成
“`
$ rails new sample_app –api -T
“`

### ステップ2. TDD(テスト駆動開発)用にGem追加
“`ruby:Gemfile
group :development, :test do
gem ‘rspec-rails’, ‘~> 3.5’
end

group :test do
gem ‘factory_bot_rails’, ‘~> 4.0’
gem ‘shoulda-matchers’, ‘~> 3.1’
gem ‘faker’
gem ‘database_cleaner’
end
“`

### ステップ3. gemインストール
“`
$

元記事を表示

Ruby で嵌る AtCoder ABC 169 C 浮動小数点

# はじめに
*[「AtCoderは、世界最高峰の競技プログラミングサイトです。
リアルタイムのオンラインコンテストで競い合うことや、
3,000以上の過去問にいつでもチャレンジすることができます。」](https://atcoder.jp/)*
を利用して、プログラミングの勉強をしています。
AtCoder さん、ありがとうございます。
# 今回のお題
*[AtCoder Beginner Contets C – Multiplication 3](https://atcoder.jp/contests/abc169/tasks/abc169_c)*
Difficulty: 536

今回のテーマ、浮動小数点による誤差

*[浮動小数点数 -WikiPedia](https://ja.wikipedia.org/wiki/%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9%E6%95%B0)*
# Ruby
## WA1
“`wa1.rb
a, b = gets.split.map(&:t

元記事を表示

Rubyの実行環境をローカルに作る手順

# Rubyの実行環境をローカルに作る手順

ローカルで.rbファイルを実行できるようにする方法。

##Rubyのダウンロード
Rubyの公式ページから、
推奨バージョン(=>)を選択しインストール

https://rubyinstaller.org/downloads/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/9c57f272-b3ef-2517-1e9b-7e17bf228131.png)

Ruby+Devkit 2.6.6-1 (x64) は130MB。

##インストール実行
**▼ I accept the Licenseにチェック**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/55b79304-db1c-2b97-d211-f3ef601b1a5e.png)

**▼Installをクリック**
![image.png](ht

元記事を表示

【Ruby】クラス定義のまとめ。基本をマスターする。

#【Ruby】クラス定義のまとめ。基本をマスターする。
rubyのクラス定義に関する内容のまとめ。

**目次**

1. [クラス定義](#クラス定義)
2. [インスタンス変数の定義(attr_accessor :)](#インスタンス変数の定義attr_accessor-)
3. [インスタンスの生成(.new)](#インスタンスの生成new)
4. [インスタンス変数に値を入れる](#インスタンス変数に値を入れる)
5. [インスタンスメソッド(クラス内で定義したメソッド)](#インスタンスメソッドクラス内で定義したメソッド)
1. [インスタンスメソッドの呼び出し](#インスタンスメソッドの呼び出し)
2. [インスタンスメソッドの中でインスタンス変数を使う(self)](#インスタンスメソッドの中でインスタンス変数を使う)
3. [インスタンスメソッドの中でif文を使う](#インスタンスメソッドの中でif文を使う)
6. [initializeメソッド](#initializeメソッド)
7. [ファイル分割(require “”)](#ファイル分割r

元記事を表示

Rails 単数リソース resourceによるルーティング

#単数リソース
resourcesメソッドは7つの基本アクションに対するルーティングを一括して設定するメソッドです。
うんそれはわかってる。でもresourceってなんだ…”s”付け忘れてない?
となったので、本日は単数リソースresourceについてまとめてみます。

見た目ではsがついてるかついていないかですが、働きは結構違います。

##あるシステムについて考える
管理ユーザーと一般ユーザーのいるシステムを考えます。
一般ユーザーはログイン後、自分のアカウントのみを閲覧、管理することができます。
この場合resourcesでrouteを設定すると以下のように設定が行われます。

“`
resources :users
“`

| HTTP |パス | コントローラ#アクション |
|:—————–|——————:|:——————:|
| GET | /users | users#inde

元記事を表示

anyenvでNodeやRubyやPythonのバージョン管理

# 概要
– github:https://github.com/anyenv/anyenv
– anyenvはnodenv, rbenv, pyenvなど*env系を管理するライブラリ
– nodenv, rbenv, pyenvは、Node, Ruby, Pythonのバージョンを管理してくれる。

anyevnでnodenvをインストールしてnodenvでほしいバージョンのNodeをインストールして管理しておくという感じ

# anyenv インストール

“`shell:
$ git clone https://github.com/riywo/anyenv ~/.anyenv
$ echo ‘export PATH=”~/.anyenv/bin:$PATH”‘ >> ~/.bash_profile
$ echo ‘eval “$(anyenv init -)”‘ >> ~/.bash_profile
$ exec $SHELL -l

# 確認
$ anyenv -v
anyenv 1.1.1

# 初期化しておく
$ anyenv install –init
“`

元記事を表示

プログラミング未経験化学系大学院生がWeb系企業に新卒で内定をもらうまでの記録

# はじめに
はじめまして!
就職活動の結果、全くの未経験の状態からWeb系自社開発企業に内定をいただくことができたので、記録を残しておきます。
中途ではなく、新卒のエンジニア職での採用になります。他業種からエンジニアに転職されている方の記事は多く見かけましたが、新卒についての情報は少ないと感じたので記事化しようと思いました。もちろん転職活動に取り組んでいる方にも参考になる内容だと思います。

## 学習を始める前の状況
– 某私立大の大学院生、化学系の研究をしている
– 研究室では完全なポンコツで、業績としては国内の小さな学会で1回発表しただけ
– 月~土は10時から23時くらいまで研究漬け(いわゆるブラック研究室)
– 2020年5月現在で大学院修士2年生、就活的には”21卒”と呼ばれる世代
– 研究でも学部時代もプログラミングには一切触れていない
– SIerとかWeb系といった言葉自体を知らない本当に0の状態からスタート

## 読んでほしい人
– 現在、Web系エンジニアを目指し就職活動に取り組んでいる人
– これからWeb系エンジニアになりたい人
– なんとなくIT業界に行

元記事を表示

【Ruby】paizaで頻出メソッドまとめてみた

#参考文献

– [【Ruby】getsとgets.chompの違いは改行にあり!](https://qiita.com/Take-st/items/26f29a6dea622d1e7e8d)
– [【Ruby】getsの使い方](https://qiita.com/aamonaamon9/items/7de49e4881ee07e24248)
– [paiza 開発日誌](https://paiza.hatenablog.com/entry/2019/09/20/%E5%88%9D%E5%BF%83%E8%80%85%E3%81%A7%E3%82%82Ruby%E3%81%A7%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E5%95%8F%E9%A1%8C%E3%82%92%E8%A7%A3%E3%81%91%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB)
– [Railsで簡単に英単語を複数形にする方法](https://qiita.com/narikei/items/023

元記事を表示

posts_controller.rb

class PostsController < ApplicationController def index # Post.allにorderメソッドを用いて、新しい投稿が上から順に表示されるようにしてください @posts = Post.all.order(created_at: :desc) end def show @post = Post.find_by(id: params[:id]) end def new end def create @post = Post.new(content: params[:content]) @post.save redirect_to("/posts/index") end end //降順にデータベースに投稿された内容を表示する

元記事を表示

[超入門]Rubyにおけるシンボルについて

railsやRubyと学習を初めてから1ヶ月がたちました。
まだまだ理解できてないところも多々あるので、今回もその記録として投稿します。

さて今日は、「プロを目指すためのRuby入門編」のシンボルを使った、
単位変換プログラムを作成中に少しおや?となったシンボルについてまとめました!

###シンボルについてとその使い方について

**・シンボルは文字列の変わりに使用することもあるが、文字列と同じオブジェクトとは限らない**
**・同じシンボル同士は同じオブジェクト**

ざっくりこんな感じでしょうか。

また、定義の仕方としては、

:シンボル名
:example => “example” と表すことも可能

また大きな違いとしては、
**シンボルは内部的には整数で処理されており、イミューダブルなオブジェクト。破壊的変更が効かない。**

###ハッシュのキーでの使用

基礎的なところは改めて整理できたので、次はハッシュ内での使用のされ方について。

examples = { :a => “aaa”, :b => “bbb”, :c =

元記事を表示

while文における繰り返し処理内での変数の加算について

Rubyプログラムを書いていて詰まってしまいましたので質問をこちらに投稿させていただきます。

現在、ネット上でrubyのプログラムでの事例としてよくでてくるドラゴンクエストのプログラムを作ってみようと思い作成中です。

実装したい仕様としては以下になります。

###想定仕様

– スライム(敵)が表れてスライムのhp(ヒットポイント)がなくなるまで攻撃する
– スライムのhp(ヒットポイント)は6とする
– 攻撃はターン性になっており、先行は常に自分
– 自分(戦士)のhp(ヒットポイント)は10とする
– スライム(敵)の攻撃によりダメージは常に1とする
– 自分は攻撃(なぐる)と回復呪文(ホイミ)を毎ターン選択可能
– 自分の攻撃は1.2.3の中からランダムでスライム(敵)のhpを削る
– 回復呪文(ホイミ)ではhpは10まで回復する
– ただし、回復呪文はたまに失敗する(呪文使用時点での自分のhpで条件付け)
– 攻撃(なぐる)と回復呪文(ホイミ)以外を選択した場合は強制的にターン終了とし、スライムのターンにうつる

ざっとこんな感じです。

###質問事項
while文の

元記事を表示

[Rails]graphql-rubyでpolymorphicを表現する

# はじめに
最近、graphql-rubyでAPIを実装しています。
Railsでは、モデルの関連付けにポリモーフィックという便利な機能があります。
これをUnionTypeを使ってgraphqlでも表現する方法について説明します。
# やりたいこと
UserテーブルとPetShopテーブルがDogテーブルのownerableでポリモーフィックな場合を考えます。graphqlでdogを取得するときに、その所有者であるownerable(user or pet_shop)のカラムも一緒にとってこれるようにする。
# ポリモーフィックではない場合
まず復習をかねて、通常の関連付け(belongs_toとかhas_manyとか)の場合を考えてみます。
以下のようにUserとDogが1対多だとします。

“`user.rb
Class User < ApplicationRecord has_many: dogs end ``` ```dog.rb Class Dog < ApplicationRecord belongs_to: user end ``` ## ObjectTyp

元記事を表示

application.html.erb



TweetApp
<%= csrf_meta_tags %>

<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>

OTHERカテゴリの最新記事