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

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

【rubyでcomet2を作る】④プログラムを実行する

### はじめに
[【rubyでcomet2を作る】③CPUオブジェクト、メモリオブジェクトを定義する2](https://qiita.com/223yuta/items/dc5e95c6be7982e1f74f)の続きです。
今回は、前回までに作成したCPUオブジェクト、メモリオブジェクトを使って、下記4つのプログラムを実行していきます。
– 単純加算処理
– 条件分岐処理
– 繰返処理
– サブルーチン処理

普段簡単に書いているこのような処理をCPUではどのように処理しているのか見ていきたいと思います。

[完成コード](https://github.com/223yu/virtual_pc)

###実行状況を見やすくする

プログラムの実行状況を見やすくするために、下記変更を加えます。
– 命令読出(フェッチ)後、実行する命令を表示する
– 命令実行後、レジスタの状況を表示する

“`ruby:cpu.rb
# 命令の読み出し(フェッチ)
ir = memory.send(“m#{pr}”)
self.pr += 1

# 実

元記事を表示

AWS SAM ローカルでいろんな角度からhello worldする

## やりたいこと
サーバーレスな処理を実装するのに備えて、ひとまずSAMを使ってローカル環境にてブラウザやcurlコマンドでhello worldをしたいです。

“`
$ sam –version
SAM CLI, version 1.22.0
“`

## 実装!
### sam initする

`sam init`して、プロジェクトを新規作成します。
SAMからの質問に対して、下のように答えました。

“`
template: AWS Quick Start Templates
package: type: Zip (artifact is a zip uploaded to S3)
runtime: ruby2.7
Project name [sam-app]: identify_user
quick start application templates: Hello World Example
“`

↓(参考)上記の詳細、質疑応答の全貌。

“`
$ sam init

Which template source would you like to use?

元記事を表示

【rubyでcomet2を作る】③CPUオブジェクト、メモリオブジェクトを定義する2

### はじめに
[【rubyでcomet2を作る】②CPUオブジェクト、メモリオブジェクトを定義する1](https://qiita.com/223yuta/items/926372c4ddab46d4d50b)の続きです。
今回はCPUオブジェクトの演算部を定義していきます。本来2進数でビット計算が行われているところを、無理矢理10進数で表現しているため、厳密には計算が正しくないところがあります。だいたいこういうもの程度に見ていただけると嬉しいです。

### CPUオブジェクトを定義する
前回の記事でCPUオブジェクトのプロパティ、制御部のメソッドの定義を行いました。今回はCPUの演算機能(各命令の処理)について定義していきます。

#### CPUの演算機能
COMET2では28個の命令セットが用意されていますので各命令を定義していきます。

各命令の定義を行う前に、命令の中には汎用レジスタやメモリの値を変更するものがいくつかありますので、最初に汎用レジスタやメモリを更新するためのメソッドを作成します。

“`ruby:cpu.rb
# GRの更新
def updat

元記事を表示

【rubyでcomet2を作る】②CPUオブジェクト、メモリオブジェクトを定義する1

### はじめに

[【rubyでcomet2を作る】①概要](https://qiita.com/223yuta/items/bf3ce3882c7199f97230)の続きです。
今回はCPUオブジェクト、メモリオブジェクトを定義していきたいと思います。

### CPUオブジェクトを定義する
CPUクラスを作成し、プロパティとメソッドを定義していきます。

“`ruby:cpu.rb
class CPU
# プロパティ

# メソッド

end
“`

#### 必要となるプロパティ
前回の記事で説明した通りCOMET2のCPUは下記4種類のレジスタを持ちます。

– プログラムレジスタ
– スタックポインタ
– フラグレジスタ
– 8つの汎用レジスタ

本来のCOMET2ではフラグレジスタのみ3ビット、それ以外は16ビットの容量を持ちます。
命令によっては16ビット命令と32ビット命令がありますが、今回はビット数まで考えることはせず、全ての命令が16ビット命令(1語命令、1メモリ番地を使用する)という前提で話を進めます。そのためCPUについてもビット数は無視して

元記事を表示

Rails scaffoldを使ってRailsに入門する

## はじめに
Railsのscaffoldを使用してCRUDのアプリケーションを生成してみます。
また、生成されたコードを読み解いて処理の流れをざっくりと読み解いてみます。

なお、本編の内容はRailsチュートリアルの2章を参考にしています。随時、参考になった文献を記載しています。

[第2章 Toyアプリケーション – Railsチュートリアル](https://railstutorial.jp/chapters/toy_app?version=5.1#sec-demo_users_resource)

## Rails scaffoldとは

– Railsの機能の一つで、コマンド1つでCRUDの雛形を作成することが出来る
– scaffoldとは「足場」という意味を持ち、Railsアプリケーションの足場を作る機能と言える

[What is Scaffolding in Ruby on Rails? – RubyGuides](https://www.rubyguides.com/2020/03/rails-scaffolding/)

## 使ってみる
### scaffo

元記事を表示

【Rails】ルーティングのまとめ

##概要
railsのroutes.rbに記述するルーティングについてのまとめ。

##内容

####ルーティングとは
受け取ったurlを認識し、適切なコントローラ内アクションやアプリケーションに割り当てる機能。

####構文
“`
httpメソッド ‘urlパターン’, to: ‘コントローラ#アクション’
“`

#####ex) 以下のhttpリクエストを受け取った場合、以下のようになる。
“`
GET /patients/17
“`

routes.rb

“`
get ‘/patients/:id’, to: ‘patients#show’
“`

### HTTPメソッド

クライアントから送られたリクエストの種別を表すもの。

####get 
ページを表示する操作。

####post 
データを登録する操作。

####put 
データを変更する操作。

####delete 
データを削除する操作。

###rootの設定 
[http://localhost:3000 /](http://localhost:3000/%E3%80%8D) にアクセ

元記事を表示

【Ruby】早期リターンと倒置if

##早期リターン
式の値を戻り値としてメソッドの実行を終了します。式が省略された場合には nil を戻り値とします。

引用:https://docs.ruby-lang.org/ja/latest/doc/spec=2fcontrol.html#return

“`ruby
def greeting(flag)
‘good evening’
return ‘good night’ if flag
false
end

greeting(true)
# => “good evening”
greeting(false)
# => false
“`

##倒置if
条件文がfalseのときnilを返す

“`ruby
def greeting(flag)
‘good evening’
‘good night’ if flag
end

greeting(true)
# => “good evening”
greeting(false)
# => nil
“`

元記事を表示

投稿モデル単体テストコードの記述

前回に続いて、サンプルアプリの投稿機能、Eatモデルの単体テストコードを実装します!

#①.テストコードを記述するファイルを作成

まず、Eatモデル単体テストコードを記述するための、ファイルを生成します!

以下のコマンドを実行します!

“`php:ターミナル
% rails g rspec:model eat
“`

以下のように、テストコードを記述するためのファイルeat_spec.rbと、FactoryBotを記述するためのファイルeats.rbが生成されます!

“`php
spec
L factories
L eats.rb
L users.rb

models
L eat_spec.rb
L user_spec.rb
“`

#②.FactoryBotを準備

続いて、Eatモデルのインスタンスを生成するFactoryBotを設定します!

eats.rbに、以下のように記述します!

“`php:spec/factories/eats.rb
FactoryBot.define do
fac

元記事を表示

Ruby の Array.pack(‘p’) で ‘can’t modify frozen String’ が出たら、バージョンを上げるか、解凍が必要

Ruby で pack をしたら、 `can’t modify frozen String` が出たので、記録する。

“`rb
[47] pry(main)> str = ‘abc’
=> “abc”
[48] pry(main)> str.freeze
=> “abc”
[49] pry(main)> [str].pack(‘p*’)
RuntimeError: can’t modify frozen String
from (pry):48:in `pack’
“`

`pack` は変更(`modify`)ではない、エラーが出るのが不思議だった。
そこで思いついたのは、「ポインタを渡すと、破壊できるから」という理由。

本当にそうなのかを調べようと思ったが、 2.6.3 まではエラーだが、 2.7.3 からはエラーにならなくなっていることに気づいた。

下記のコードを `tmp.rb` として保存し、手元にある version を切り替えながらテストした。

“`rb
# tmp.rb
# frozen_string_literal: true

puts RUBY_VE

元記事を表示

【環境構築】rbenvで指定バージョンのRubyにダウングレード【mac】

Macでrbenvを使用して指定バージョンのrubyにダウングレードしようと思ったのでメモ:writing_hand_tone2:
ちなみにHomebrewでrbenvは既にインストール済み。

チュートリアルのバージョンと自分の開発環境のバージョンを一致させたくて今回のダウングレードを実施することにしました。

(~~キャッチアップの際、色々エラーが出てきて、本来の主目的以外のところで時間をとられるのが面倒だなと思ってたので、「もうチュートリアルと一緒のバージョンに下げちゃえ」と思ったので、やむをえずダウングレードすることに~~)最善策ではないと思うので、良い子はマネしないでね:runner_tone5:

# 実行環境
* Homebrew 3.3.2
* ruby 2.6.8 → 2.5.0 にダウングレード

# 現在のRubyバージョンを確認
“`
$ ruby -v
ruby 2.6.8p205 (2021-07-07 revision 67951) [universal.x86_64-darwin21]
“`

# 指定バージョンをインストール
“`
$ rben

元記事を表示

Could not reach host index.rubygems.org. Check your network connection and try again. と言うエラーについて。

### Cloud9を使ってrailsチュートリアルを進めているのですが、`Could not reach host index.rubygems.org. Check your network connection and try again. `と言うエラーについて教えていただきたいです。

### 発生している問題・エラー

“`
$ bundle install
$ bundle update
“`
などを叩くと

“`
Could not reach host index.rubygems.org.
Check your network connection and try again.
“`

と表示されます。

自分で試したことといえば数分時間をおいてから新しくディレクトリを作り直すことしかできず、(お手上げ)しかし、それでなぜかエラーが表示されなくなり、問題なく先ほどのコードを叩くとinstall されてupdate出来てしまいました。

そこで、なぜ解決できたのか質問させてください。

hostに行けないとエラーが出た場合(Could not reac

元記事を表示

ruby on rails tutorial3章を始めたら出てきたThere was insufficient space〜 というエラーの解決方法

やっと3章に突入して意気揚々と進めていくと、

“`ruby:qiita.rb

There was an error while trying to write to
`/tmp/xxxxxxxxxxxxxxxxxxxx/versions`. There was
insufficient space remaining on the device.

“`

がこんにちは。

どうやら何かの容量がないということらしい。

そうこうしているうちに、awsのターミナルにコードを入力できなくなる。
![スクリーンショット 2021-11-23 10.30.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2144713/a365d842-4b6f-973f-26eb-5265ba55315b.png)
![スクリーンショット 2021-11-23 10.30.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214

元記事を表示

【オリジナルアプリ】公務員からの転職を考える人のための交流サイト【公務員NEXT】

はじめに

自己紹介

– 未経験からのエンジニア転職を目指す30代前半の地方公務員です。
– 3児のパパであり、家事・育児・仕事の合間を縫って、何とか20時間/週の学習時間を確保できているという状況です。(記事執筆時点で学習開始から40週を過ぎたので、総学習時間は約800時間です。)
– ポートフォリとして、オリジナルアプリが完成したので、これから転職活動を開始します。

この記事の目的

– 転職活動を開始するにあたって、オリジナルアプリの内容を人の目を意識した形で整理しておきたかったからです。
– オリジナルアプリの案に悩んでいる人に向けて、一つの事例として参考になってくれればと思っています。
– 似た境遇の人の励みになれば、幸いです。(私自身、似た境遇の人が頑張っているところを見るとすごく励みになりました。)

オリジナルアプリ「公務員NEXT」について

目次

[1.サービスの概要](#1サービスの概要)
[2.開発経緯](#2開発経緯)
[3.使用技術](#3使用技術)
[4.インフラ構成

元記事を表示

文字列の置き換え

#はじめに
文字列が入力されるので表に沿って文字列をを置き換える

| 置き換え前 | 置き換え後 |
|:———–:|:————:|
| A | 4 |
| E | 3 |
| G | 6 |
| I | 1 |
| O | 0 |
| S | 5 |
| Z | 2 |

“`ruby
string = gets.chomp
string.gsub!(“A”, “4”)
string.gsub!(“E”, “3”)
string.gsub!(“G”, “6”)
string.gsub!(“I”, “1”)
string.gsub!(“O”, “0”)
string.gsub!(“S”, “5”)
string.gsub!(“Z”, “2”)

puts string
“`
冗長

元記事を表示

Ruby シンボルを理解する

## ハッシュについて
ハッシュとは配列と似たようなもので、配列はindex(0から始まる投資番号)でvalue(値)を管理するのに対して、key(文字列のものとシンボルがある)によってvalue(値がある)。
以下にハッシュの例としてuserハッシュを用意する.

#### Ruby

“`ruby
user = { ‘name’ => ‘田中’,
‘email’ => ‘tanaka@example.com’}
“`

あれこれ連想配列じゃん、javascriptのオブジェクトじゃんと思った人も多いと思う。呼び名が違うだけで実際ほぼ同じである。しかし、keyの値が文字列になっているし、=> このような記号が使われている。(PHPなら使われていたような…)
####Javascript

“`javascript
user = { name: ‘田中’,
email: ‘tanaka@example.com’}
“`

#### keyの値を文字列以外で書くことも可能!! 
##シンボルを使う
こちらの方がbetterらしい
#### R

元記事を表示

【初心者向け】翻訳ファイル(YML)編集後から「InvalidLocaleData」のエラーになる

###■環境
・Windows10(64bit)
・Ruby 2.7.4
・Rails 5.2.6
###■翻訳ファイル編集後から「InvalidLocaleData」のエラーになる
####状況
Railsアプリケーションを国際化対応(i18n)するために、翻訳ファイルである「ja.yml」と「en.yml」を編集した。
しかし、その後から全ビューが以下のエラーで表示不可になった。

 I18n::InvalidLocaleData in 【コントローラ名】#【アクション名】
 Showing 【ビュー名】 where line #【行番号】 raised:
 can not load translations from 【アプリケーションの絶対パス】/config/locales/en.yml:
 #): did not find expected key while parsing a block mapping at line 【行番号】 column 【列番号】>

####原因
ダブルクォーテーション(”)で囲

元記事を表示

seedとfakerでランダムなユーザーデータを作成し、RailsでUser-APIを実装する。

## 手順
1\. APIモードで作成

2\. モデル・コントローラの作成

3\. ルーティングの設定

4\. コントローラの設定

5\. seedとFakerでランダムなサンプルデータを作成

6\. test.httpファイルを作成して、HTTP要求の種類別に要求をしてみる

## APIモードで作成
“`
console
$ rails new user-api –api
“`

## モデル・コントローラの作成
今回はtitleというstringを持ったpostというテーブルを作成します。

“`
$ rails g model post first_name:string last_name:string gender:integer

$ rails g controller users

$ rails db:create

$ rake db:migrate
“`

## ルーティングの設定
“`
config/routes.rb

Rails.application.routes.draw do
resources :users
end

元記事を表示

curlでアクセスできるのにrubyでアクセスできない、そんな状況でもデバッグがしたい!

# 全く同じパラメータなのにcurlだとアクセスできてrubyだとエラーが返ってくる??
とあるサービスのAPIを利用していたある日、
rubyで利用しているAPIからシステムエラーが返ってくるとの連絡が。
しかも、ログをとってcurlで叩いてみると正常にAPIは動作するとのこと。

さて、環境情報が悪いのかプログラムの仕業か、はたまた太陽風の影響なのか?
半日ほどあれやこれややってみて、原因がわかってみればああなんだそんなことか。というお話です。

#### rubyやcurlの問題ではなかったので、思考の過程をメモ書きとして残しておくものです。

## まずは本当なのか確認する

今回、問題が発生したのはテストサーバーなので、まずはテストサーバーにてリクエストのログを取りました。
コード自体はなんて事のない普通のNet::Httpな奴です。

(※コードはイメージです)

“`ruby
uri = URI.parse(“https://jsonplaceholder.typicode.com/todos”)
http = Net::HTTP.new(uri.host, uri.p

元記事を表示

【個人開発】バチェラーの優勝予想をする放置ゲームを開発しました

> 最初から優勝者を当てていたのに、その証拠がなく誰にも自慢できなかった。

これがバチェラー・ジャパン シーズン2(2018)を見終えたときから
自分の中に残っていたモヤモヤであり、本アプリ開発の背景です。

## サービス概要
[![Image from Gyazo](https://i.gyazo.com/06ced0101bbc63e1f402b3bd7a900bdf.jpg)](https://bachelor-derby4.herokuapp.com/)
文字通り「バチェラー・ジャパン シーズン4」の優勝予想をするシンプルなゲームです。
1分で遊べて人間観察力の自慢ができるサービスです。

https://bachelor-derby4.herokuapp.com/

## 使用技術
– Ruby
– Ruby on Rails(API)
– slim
– sorcery
– jwt
– meta-tags
– JavaScript
– axios
– bootstrap
– Vue.js
– Vuex
– V

元記事を表示

Dockerを使ってRails5の初期環境をサクッと構築する

## はじめに

そうだ、Rails環境、作ろう。
(BGM: 「My Favorite Things / The Sound of Music」)

## この記事の目標

– `docker compose up` したらホスト側からrailsのウェルカムページが表示できるコンテナイメージを作成するDokerfileおよびdocker-compose.ymlを作成する。
– DBは個人的な好みでpostgresqlにする(それほど特にこだわりはないけど)
– DBはホスト側のSQLツールから接続できるようにする。
– ホスト側の環境は極力汚さない。

## 作業環境

– Windows10 Pro(MacOSでも手順は変わらないと思います)
– Docker Desktop version 4.1.1
– Visual Studio Code 1.59.1
– 以下の機能拡張をインストールしておく。
– Remote Development
– Docker

## 作成手順

### docker-compose.ymlの構成

コンテナを2つ作ることとします。

元記事を表示

OTHERカテゴリの最新記事