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

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

roman numerals

# お題

アラビア数字(arabic numerals)を受け取って,ローマ数字(roman numerals)を返すmethodを書きなさい[^pine].

# ローマ数字で使われる文字

| arabic numerals | roman numerals |
|—————-:|:—————|
| 1 | I |
| 5 | V |
| 10 | X |
| 50 | L |
| 100 | C |
| 500 | D |
| 1000 | M |

# 例

| arabic numerals | roman numerals |
|—————-:|:–

元記事を表示

【AWS】ログの確認方法について

#はじめに

ポートフォリオ作成中で、自動デプロイ時にUnicornに関するエラーが発生しました。
エラーの内容についてはファイルの場所が悪かったという簡単な内容だったのですが、ログの確認を怠り
(というよりログの確認方法を理解していなかった)、解決までに時間を要したので、コマンドを含め記述していきたいと思います。

#環境

Ruby on Rails ‘6.0.0’
Ruby ‘2.6.5’

#エラー内容

これまでCapistranoによる自動デプロイはできていました。ローカルでアプリケーションを編集後、いつもの
ようにデプロイのコマンドを実行すると、下記のエラーが出現しました。

“`
01:12 unicorn:start
(省略)
SSHKit::Command::Failed: bundle exit status: 1
bundle stdout: Nothing written
bundle stderr: master failed to start, check stderr log for details
(省略)
“`

#解決に向けて

エラー文を参照

元記事を表示

Rails + Docker環境でBetterErrorsを表示する

“`
$ docker-compose up
“`

コマンドを打っても通常のエラー画面が表示される。

解決策

“`ruby:config/enviroments/development.rb
if Rails.env.development?
BetterErrors::Middleware.allow_ip! “0.0.0.0/0”
end
“`

このコードを追記する。
BetterErrorsはdevelopmentでしか使っていないらしいです!
なのでenvで条件をつけます!

以上です。。。

元記事を表示

Ruby 3.0.0の型チェック(rbs)を簡単に試す

[Ruby 3.0.0](https://www.ruby-lang.org/en/news/2020/12/25/ruby-3-0-0-released/)がリリースされたので、型チェックを試してみました。

型チェックをするためには、少し準備が必要だったりするので簡単にできる方法を紹介します。

**1.Ruby 3.0.0をインストールする**

“`sh
$ rbenv install 3.0.0
$ rbenv local 3.0.0
“`

ここでエラーが出る場合は、ruby-buildをアップグレードしないといけないかもしれません。

参考:
rbenv/ruby-buildのアップデート
https://qiita.com/jhanyu/items/38671f7e9f03b77670c0

**2.目的のコードを書く**

このコードを対象に型チェックをしてみます。
`test.rb`というファイル名で保存します。

“`ruby:test.rb
class Test
def myfunc str
puts str
end
end

t = Te

元記事を表示

第十一回

# class

## 概要

今回はクラスについて取り扱っていく.基本rubyでは,クラス名はアルファベットの大文字で始めなければならない.クラス定義は,識別子で指定した定数へのクラスの代入になる.クラスがすでに定義されているとき,同じクラス名でクラス定義をかくとクラスの定義の追加になる.ただし,元のクラスと異なるスーパークラスを指定するとTypeErrorを起こすので注意.

## プログラム

以下,サンプルプログラムとなる.

“`ruby:hello_class.rb
class Greeter
def initialize
@name = gets_name
puts_hello
end
def puts_hello
puts “Hello #{@name}.”
end

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

Greeter.new
“`

これを実行すると

C:\Users\nobua\M1>ruby h

元記事を表示

学年を計算・表示する

生まれた年と生まれた月から学年を計算・表示するコードです。
イレギュラーはあるので人によって違うこともあると思いますが、多くの人はこれに当てはまるはずです。

学年は、4月を区切りとして計算しています。
`birth_year`, `birth_month` には生まれた年月を、 `judge_year`, `judge_month` には計算するときの年月を渡します。

### 引数の例

* 2018年1月生まれで 2021年4月での学年を計算する場合
* `birth_year` : 2018
* `birth_month` : 1
* `judge_year` : 2021
* `judge_month` : 4

“`ruby
def grade(birth_year, birth_month, judge_year, judge_month)
judge_year -= 1 if judge_month < 4 year = judge_year - birth_year year += 1 if birth_m

元記事を表示

Railsで内容を更新しても反映されない?

### ★内容を更新したのに反映されない。。。
springが悪さをしているかも?

springはrails sをした時に
同時に立ち上がり読み込むもので古い情報を読み込んでいる可能性がある

### ❶rails sをして別タブでspring stop
再度springをして挙動を確認すると悪さをなくせるかも?

“`ruby
$ spring stop

Spring is not running
“`

### ❶プロセスを見てみる
ここで下記以外のプロセスがあるようならKILL

“`ruby
ps aux | grep spring
“`
![12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/958284/b930ca98-df88-8fd9-d0a7-1030e1e402dd.png)

$ ps aux | grep spring で、KILLを実行後、KILLできているか確認

“`ruby
$ kill -9 ◯◯◯◯

$ ps aux | grep spring
`

元記事を表示

Railsチュートリアル備忘録(3章 3.3.2)

## 環境
macOS Catalina 10.15.5
Rails 6.0.3

Railsチュートリアルとそれに付随するいろいろを書いていきます。
Githubに慣れたいので、チュートリアルは第6版に準拠しています。

## 3.3.2 Red
/static_pages/aboutというURLからビューを表示させたい。
`$ rails t`からどのような順番で確認していくか?

###結論
①`config/routes.rb`にURLを作る
②`app/controllers/static_pages_controller.rb`にaboutアクションを作る
③`app/views/static_pages`に`about.html.erb`(ビュー)を作成する

###概要
test追加

“`test/controllers/static_pages_controller_test.rb
test “should get about” do
get static_pages_about_url
assert_response :success
end

元記事を表示

条件分岐 条件式の条件式の順番

## 問題

ターミナルから数字を入力して、数字に応じて以下のように出力するプログラムを書いてください。

– 10以下なら「10以下の数字です」
– 10より大きい数値なら「10より大きい数字です」
– 10以下でかつ0以下なら「0以下の数字です」

## 解答
“`ruby:ruby.rb

input = gets.to_i

if input <= 0 puts "0以下の数字です" elsif <= 10 puts "10以下の数字です" else puts "10より大きい数字です" end ``` ## ポイント ターミナルから数値を入力する書き方(to_i)や、条件分岐の書き方(elsifとelseの使用、比較演算子の使用)は比較的わかり易かったと思います。 今回の問題のポイントは、**3つの条件のうちどの条件から記述するか**ということです。 if文は先に書いた条件から判断していきます。 全ての条件式を比較し総合的に判断するのではありません。 そのため上の条件に当てはまったら、たとえ下の条件に当てはまっても、下の条件の処理はスルーされます。 つま

元記事を表示

Rubyのif,case

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

# if-elsif-else-end

if文の書き方

“`el
if 条件式 then
処理
elsif 条件式 then
処理
else
処理
end
“`

## 閏年判定(単数)

まず4の倍数なのかを判定する

“`el
p year = ARGV[0].to_i

if year%4==0 then
p true
else
p false
end
“`

yearを入力として、それは4の倍数ならtrue、そうじゃなければfalse  実行すると

“`el
$ ruby check_leap.rb 2004
2004
true
“`

では、1999でやってみる

“`el
$ ruby check_leap.rb 1

元記事を表示

Ruby 3.0で発生する「プロを目指す人のためのRuby入門」との差異について

## はじめに

2020年12月25日に、Rubyの新しいバージョンであるRuby 3.0がリリースされました。
一方、2017年11月に出版した書籍「[プロを目指す人のためのRuby入門](https://gihyo.jp/book/2017/978-4-7741-9397-7)」(通称・チェリー本。以下、本書)は執筆当時最新だったRuby 2.4.1を対象にしています。

本書は紙の本であるため、簡単に内容をアップデートすることができません。しかし、何もしないとどんどん内容が古くなってしまい、「本の通りやってみたけど、今使っているRubyとなんか動きが違う」ということになってしまいます。

そこで新しいRubyのバージョンがリリースされて、本書の説明と異なる部分が出てきたときは、毎回ネット上でその差異を説明するようにしています。その説明を読めば、動きが違う部分があってもきっと落ち着いて対処できるはず、という算段です。

というわけで、この記事ではRuby 3.0で発生する「プロを目指す人のためのRuby入門」との差異について説明します。

なお、本文に出てくる章番号や項番号は、書

元記事を表示

null byteエラーが発生したときの対処

# やりたいこと

①S3から複数のZipファイルを取得

②複数のzipファイルを解凍しディレクトリ形式にする

③最終的に1つのzipファイルにしたい。

# 起きた問題

①でget_objectしたところ、以下のようになってしまい、②で必要なファイルパスが取得できない状況。

`PK\u0003\u0004\u0014\u0000\u0000\u0000\u0000\u0000\xA1\x9AYQ\u0000\u0000\u0000`

“`ruby
client = Aws::S3::Client.new(
:region => ‘ap-northeast-1’,
:access_key_id => ‘***’,
:secret_access_key => ‘***’,
)
@orders.each do |order|
obj = client.get_object(
bucket: “*”,
key: order.zip_file_name
).body.read

Rails.logger.debug obj.inspect

元記事を表示

Kaminari – Railsのページネーション機能追加

#ページネーションとは

**pagination ・・・ ページ付け、ページを示す数字**
[weblioより引用](https://ejje.weblio.jp/content/pagination)

ページ付けとあるように、”ページを持たせる”という認識でOKです。

例えば、多くの人が使う投稿アプリで一覧表示で全ての投稿を表示するとしましょう。
ページネーションなしだと、全ての投稿が1ページの中に表示されてしまいます。
投稿数が10個程だと問題ありませんが、複数人が使うようなアプリで全ての投稿を一度に表示すると、1ページに100, 1000と表示されてしまい、非常に見づらくなります。カオス状態です。。。

しかし、ページネーションを使えば、非常に多くの投稿があっても、1ページに表示する投稿数が決まっています。
よって、カオス状態とならず、数ページにわたって投稿を表示することができます。

#kaminari
Railsのgemの1つで簡単にページネーション機能を実装することができます。
なお、今回は掲示板一覧表示機能にページネーション機能を実装します。

英語ですが、Gith

元記事を表示

【Ruby on Rails】Bcryptとはなんなのか?

#はじめに
Bcryptとはなんぞや?

#Bcrypt
パスワードをハッシュ化するための関数を提供するgemのこと。
※bcryptのハッシュは復号化できないようになっている。
最初からgemfilelに記載されているものではないけど、gemfileに記載自体はされているのでコメントを外せば使える。

“`ruby:Gemfile
gem ‘jbuilder’, ‘~> 2.7’
# Use Redis adapter to run Action Cable in production
# gem ‘redis’, ‘~> 4.0’
# Use Active Model has_secure_password
# gem ‘bcrypt’, ‘~> 3.1.7’
“`
↓コメントを外して、`bundle install`を実行する。

“`ruby:Gemfile
gem ‘jbuilder’, ‘~> 2.7’
# Use Redis adapter to run Action Cable in production
# gem ‘redis’, ‘~> 4.0’
# Us

元記事を表示

【Ruby On Rails】入力したテキストを改行させて表示させたい場合に用いるsimple_formatの使い方

備忘録です。

# simple_formatを用いない場合

“`ruby:show.html.erb
<% @hoges.each do |hoge| %>
<%= hoge.text %>
<% end %>
“`

# simple_formatを用いた場合

“`ruby:show.html.erb
<% @hoges.each do |hoge| %>
<%= simple_format(hoge.text) %>
<% end %>
“`

# ポイント
simple_format()という形の括弧内に表示させたい対象コードを記述する。

元記事を表示

Hotwireでリアルタイムなチャットを作る

## はじめに

12/23にRuby on Railsの生みの親:DHH氏が`Hotwire`という新しい`gem`について言及され、それが話題になっているようだったので試してみた記事です。

元記事を表示

Raspberrypi4にCloud9をインストールしてRailsの開発環境を整える

##あいさつ
初めての人ははじめまして!知っている人はこんにちは!
独学でプログラミングを極めるAtieです!
今日は[Railsチュートリアル](https://railstutorial.jp/)をしていくためにRaspberrypi4(以下ラズパイ)にCloud9をインストールし開発環境を整えます
もともと第一章はクラウドの開発環境でしていたのですが無料プランだったので少ししか使えずいっそのことラズパイにCloud9をインストールしてしまおうと思ったのがはじめです
では!

##環境
サーバー: Raspberrypi4 4GBモデル
OS: Raspberry Pi OS Lite Release date: December 2nd 2020
メインPC: Surface pro7
メインPCのOS: Fedora32 Workstation

##1.ラズパイのセットアップ
まずはラズパイのセットアップをしていきます
###OSイメージのダウンロード
RaspiImagerを使おうとしましたが自分のOSはFedoraなので[公式サイト](https://www.raspbe

元記事を表示

【PHPとRuby記述の比較】記述方法がどんな風に違うんだろう?と疑問を持っている方へ

__◆目的__
Rubyを学習後、ProgateにてPHPの学習を始めたのですが、コマンドが微妙に違う…こんがらがりそう(; ;)…ということで、特に気になったのを後学のためまとめました。
RubyとPHPどれくらい書き方が違うんだろう…?という疑問を持っている初学者の方の「ふ〜ん」になればと思います。

__**今後も地道に更新していきます__

__◆目次__
__1)foreach と each の比較・・・繰り返し処理
2)連想配列とハッシュの比較
  1. 連想配列・ハッシュから値を取得
  2. 値を取り出して空の配列に代入 => 新しい配列を作る
3)クラス
  1. クラスの外で値を代入
  2. __constructメソッドとinitializeメソッド
  3. __constructメソッドとinitializeメソッド ~引数を与える~
  __

# 1) foreach と each の比較・・・繰り返し処理

“`【PHP】繰り返し処理(foreach).php

元記事を表示

インストールが簡単なRuby用のGUIライブラリlibuiのバインディングを作った話

## はじめに

こんにちは。

今日はRuby3.0がリリースされる日です。
先日libuiというRubyでGUIを作れるGemをリリースしました。
( [libui](https://github.com/andlabs/libui) のバインディングです)
まだまだ足りない部分は多いかと思いますが記事にします。

* https://github.com/kojix2/libui

| Windows | Mac | Linux |
|———|—–|——-|
|||【Rails6】Dockerによる開発環境構築

#はじめに

先日開発環境にDockerを導入しましたが、記事に書いてあるコードをほとんど模写したような状態であったため、本日改めてコードの意味を確認するため、記述していきます。

なお、環境構築を行うにあたり、参考にさせて頂いた記事は以下です。

[docker ruby(2.6.5)・mysql(5.6.47)・rails(6.0.0)の開発環境構築](https://qiita.com/Tomohisa_koyama/items/5f2d32fd0677aa244b72)
[既存のRailsアプリの開発環境にDockerを導入する手順【Rails, MySQL, Docker】](https://qiita.com/DaichiAndoh/items/66bf631f72698b5c2a53)
[Docker + rails6 + MySQL + bootstrap,jqueryまで環境構築完全ロードマップ](https://qiita.com/rakko1124/items/ff698a966b94ebe8aa7e)
[Docker公式:Railsクイックスタート](https

元記事を表示

OTHERカテゴリの最新記事