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

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

[Ruby] Enumerable#chunk{,_while}、Enumerable#slice_{before,after,when} の違い

:::note info
これは2016年くらいに **るりま**[^rurema]を見て書いたメモです。今のるりまは充実していて、嬉しいです。下記の内容は現在の Ruby でも変わっていないので自分用に投稿します。
:::

[^rurema]: https://docs.ruby-lang.org/ja/latest/class/Enumerable.html

ruby の Enumerable モジュールには、似たようなメソッド

* chunk
* chunk_while
* slice_before
* slice_after
* slice_when

があります。

このうち、chunk_while、slice_after、slice_when は Ruby 2.3 から使用可能です。

## 形式

* `chunk {|elt| key } -> Enumerator`
* `

元記事を表示

Railsでenum使用時にsyntax error, unexpected local variable or method, expecting =>

# 環境
* Ruby3.1.2
* Rails6.1.7
# 問題
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2729380/0ed233ae-e117-d8b3-e49f-02ea8e1408a5.png)
Railsでアプリ作成中にenumを使っていてmodelにenumの記述を加えて動作確認しようとしたらエラーが出た。解決策がわからず、検索しても記事が出てこなかった。
# 解決方法
## 解決方法①
“`diff_ruby
– enum period: { 1限: 0, 2限: 1, 3限: 2, 4限: 3, 5限: 4, オンライン: 5 }
# 数字を半角から全角に変更
+ enum period: { 1限: 0, 2限: 1, 3限: 2, 4限: 3, 5限: 4, オンライン: 5 }
“`
とすると![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2729380

元記事を表示

【Rails】Twitterクローンを作ってみた 〜コメント機能の作成〜

## はじめに
[【Rails】Twitterクローンを作ってみた 〜ツイート機能編〜](https://qiita.com/bloom__fu/items/975432a9aae39dae958f)の続きです。こちらを前提に進めていきますので、まだご覧になっていない方はそちらからご覧ください!※こちらはdockerでの環境構築を省きます。
## サービス環境
– ruby 3.0.0
– Rails 6.0.4
– docker
– mysql 8.0.2
– Slim, SCSS

## コメント機能作成
#### 条件
– TweetをクリックでそのTweetのコメントが見られる(コメントページ)
– コメントページの「コメント」をクリックでコメント新規作成に遷移できる
– コメントを投稿するとコメントページにリダイレクト
コメントモデルの作成し、Userモデル, Tweetモデルとコメントを関連付けさせてください。コメントもTweet同様140文字までとします。また、コメントモデルのテキスト部分のカラム名はtextとしてください。
#### 実装流れ(簡略)
① Userモデル

元記事を表示

Rails7をDockerfileとdocker-composeを使って立ち上げる

Ruby on Rails7を簡単に立ち上げるファイル群をGithubにあげました。

DockerでRailsのイメージを使うのが一番簡単な方法ではありますが、イメージの方に色々入れたい派の人間なので、昔ながらのDockerfileとdocker-composeを使います。

ということでDockerの環境があれば、以下のファイルをClone→実行することでRailsのスタートページを簡単に立ち上げることができます。

手順は以下の通りです。

1. もってくる
“`
$ git clone https://github.com/hatoPoPoPoPo/rails7.git
“`

2. ディレクトリ移動
“`
$ cd rails7/
“`

3. Docker Buildを実行
“`
$ docker-compose build –no-cache
“`

4. コンテナ起動
“`
$ docker-compose up -d
“`

5. DBの作成

“`
$ docker-compose run –rm rails rake db:create

元記事を表示

floorメソッド

# はじめに
floorメソッドの存在を知っておくための議事録です。

## floorメソッドとは
小数点の切り捨てを行うメソッド。
.to_f(整数を小数にするメソッド)のfもfloorの略と考えられる。
以下使い方。

irb(main):001:0> 3.1.floor
=> 3
irb(main):002:0> 3.9.floor
=> 3

元記事を表示

Timeメソッドについて

# はじめに
Rubyの標準ライブラリであるTimeメソッドについて忘れないように記録に残す。

## Timeメソッドとは
TimeクラスはRubyの標準ライブラリにあり、時刻を表すクラスです。
以下のように利用します。

# 現在時刻
time = Time.new
p time
p time.year #年
p time.month #月
p time.day #日
p time.hour #時
p time.min #分
p time.sec #秒
p “曜日番号:#{time.wday}” #日曜日を0とした曜日番号
p “timeの年の1月1日から何日経過したか:#{time.yday}” #timeの年の1月1日から何日経過したか
p “タイムゾーンの確認:#{time.zone}” #タイムゾーンの確認

# 実行結果
2017-07-24 16:47:04 +0900

元記事を表示

【Ruby on Rails】RSpecでのモデル作成方法

### ターミナル実行

“`terminal:ターミナル
rails g rspec:model モデル名
“`
例えば、
>rails g rspec:model user

など。

#techcamp136期

元記事を表示

【Ruby on Rails】Factorybotでのインスタンス生成方法

### フォルダーの作成
「spec」フォルダー内に「factories」フォルダーを作成

### ファイルの作成
「factories」内に「モデル名(複数形).rb」ファイルを作成。

例えば、
>「spec/factories/users.rb」

### ファイルに以下記載

以下、例
“`ruby:spec/factories/users.rb
FactoryBot.define do
factory :user do
name {Faker::Name.last_name}
email {Faker::Internet.free_email}
password {Faker::Internet.password(min_length: 6)}
password_confirmation {password}
end
end
“`

#techcamp136期

元記事を表示

【Ruby on Rails】RSpecの導入方法

# RSpecの導入方法

### Gemfileに追記

GemfileにRspec, Factorybot, Fakerを追加するための記述を追記。
この時、:test do ~ endの間に追記することに注意。

“`ruby:Gemfile
group :development, :test do
# Call ‘byebug’ anywhere in the code to stop execution and get a debugger console
gem ‘byebug’, platforms: [:mri, :mingw, :x64_mingw]
#ここに以下3行を書き足す
gem ‘rspec-rails’, ‘~> 4.0.0’
gem ‘factory_bot_rails’
gem ‘faker’
end
“`

### ターミナル実行

ターミナルで以下を実行。
“`terminal:ターミナル
bundle install
rails g rspec:install
“`

以下の実行結果が表示される。
specフォ

元記事を表示

TRICK2022(超絶技巧Ruby意味不明コンテスト for RubyKaigi)で金賞を獲得されたプログラム(Quine)を動かしてみました ーー 高校生向けプログラミング講座「福岡県Rubyキャンプ」にて

# はじめに

TRICK2022(超絶技巧Ruby意味不明コンテスト for RubyKaigi)で金賞を獲得されたプログラム(Quine)を動かしてみます。

動かしてみたきっかけとなったのは、福岡県Ruby・コンテンツビジネス振興会議さんと福岡県さんが主催された「[高校生向けプログラミング講座「福岡県Rubyキャンプ」](https://www.pref.fukuoka.lg.jp/press-release/ruby-camp2022.html)」にて、コーチとして参加したことです。詳しくは後述します。

Railsのアクション内で実行される「redirect_to」にて、クエリストリングを渡す方法

## バージョン

– Rails 6.1.7
– ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux]

## 状況

controller内の処理にて、リダイレクトするときにクエリストリングが渡したい。

“`ruby
class SessionController < ApplicationController def create # ... 処理 redirect_to xxx_url # ここでクエリパラメータを渡したい end end ``` ## 結論 上記のように`xxx_url`を使った場合、キーワード引数として値を渡してもうまく反映されない。 ```ruby class SessionController < ApplicationController def create # ... 処理 redirect_to xxx_url, hogehoge: "fugafuga" # もちろんこんな形でも無理 # redirec

元記事を表示

[m1 mac]rbenvでRubyをインストールするとBUILD FAILEDが出た際の解決方法

# はじめに
rbenvで他のバージョンをインストールした時に、はまったので共有しようと思います。

# 経緯
rubyのバージョンを2.5.3で合わせる必要があり、rbenvでインストールすると下記のエラーが発生しました。

“`
rbenv install 2.5.3

Downloading ruby-2.5.3.tar.bz2…
-> https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.3.tar.bz2
Installing ruby-2.5.3…

WARNING: ruby-2.5.3 is past its end of life and is now unsupported.
It no longer receives bug fixes or critical security updates.

ruby-build: using readline from homebrew

BUILD FAILED (macOS 12.5.1 using ruby-build 20220910.1)
“`

# なぜ

元記事を表示

Rubyで設定ファイル読み込み

# はじめに
Rubyで設定ファイルの読み込み方法を調べたので、そのメモ書きになります。
Docker上でのRailsサーバーを使用しています。

# 設定ファイル用意
今回はtest.confファイルを以下内容で用意します。
“`
[api]
key = ABC
“`

# Gemfile
Gemfileに以下を追加します。
“`
group :development do
gem ‘inifile’ ★追加
“`

# イメージの再構築
“`
docker-compose build –no-cache
“`

# ソース
“`
require “inifile” ★追記

class Search < ApplicationRecord def self.searchApi() ini = IniFile.load("setting.conf") ★追記 searcher.key = ini["api"]["key"] ★追記 ``` # 起動 ``` docker-compose up -d ``` 以上で、設定ファイルが読み込めるよ

元記事を表示

Rubyの総和を求めるinject(:+)は罠があるからsumにして空のケースもテストしよう

### 最初に

コミット権限をもらったRubyライブラリが古く、
`sum`のない時代に書かれたライブラリで`inject(:+)`で総和が求められていました。

“`ruby
a = [1, 2, 3]
p a.inject(:+) # => 6
“`

このように数値の要素があれば、総和を求めることができます。
このケースでは整数なので、`Integer#+`が使われます。

ちなみに、`reduce`と`inject`はエイリアスです。

### 問題点

しかし、空の配列で`inject(:+)`を使うと、`0`ではなく`nil`を返してきます。

“`ruby
a = []
p a.inject(:+) # => nil
“`

`inject`は総和を求めるのに限られたメソッドではないので、「要素に何もないから数値の総和を求めたいのだろう」と勝手に決めつけたりせず、`:+`を使うことなく淡々と`nil`を返してきます。

この挙動を知らずに書かれているコードであったため、そのライブラリはバグっていました。

### 解決策

空の配列に対する総和を`0`にしたけれ

元記事を表示

Docker×Ruby on Rails環境でデバックを行う

# はじめに
Dockerを使ってRuby on Railsの環境構築をした際に、デバックの仕方に困ったので、そのメモ書きになります。
今回はpry-railsを使ってのデバックです。

# Gemfile
Gemfileに以下を追記します
“`
group :development, :test do
gem ‘pry-rails’ ★追加
end
“`
pry-railsがインストールされるようにします。

# docker-compose.yml

Gemfileに以下を追記します
“`
app:
tty: true ★追加
stdin_open: true ★追加
“`
これはdocker runコマンドの -it オプションと同じで、
dockerでの操作結果等がコンソールに出力されるようにする設定です。

# binding.pryの記述
デバックしたいRubyのソースに下記を追記してください。
“`
binding.pry
“`

# Dockerイメージを再構築
これまでの変更があるので、イメージを再構築します。
“`
docker-compo

元記事を表示

有用なことは一つも書いていない記事2

# 自分用(rubyのこと)

標準入力 
数値で受け取りたい場合 → gets.to_i
文字列 → gets

配列
配列→配列
連想配列→ハッシュ {“状態” => “眠い”, “機嫌”=> “悪い”}

# 感想

唐突にまとめてみた
急に仕事でrubyonrailsをさわることになり、急いでrubyを勉強中(railsもしないとけない)
もともと開発関係は未経験で、Pythonを初心者に毛の生えた程度の独学していた人間に急に全く触れたことない
言語を触ることになったので吐きそう

paizaでとりあえず講義動画を見ず、演習問題を爆速で進めてます
ハッシュが許せん。なんだよハッシュて。「=>」の文字がじみにうつのがめんどくさいのでげせぬ

標準入力も文字列と数値の場合で変わるのがげせぬ
統一してほしい~(あとで、数値に変換しなくていいのが楽だけど)

お優しいかたで、いい教材がありましたらコメントでいただきたい

元記事を表示

Ruby 麻雀 配牌のシャンテン数をカウントしたい②

まだ完成までは到達していませんが、まず一部の目処が立ったので、アウトプットとなります。
その点はご了承ください。

# 今回の進捗
前回作成した配牌の種類カウンターを用いて、面子の判定を行うコードを作成しました。
もう少し上手い書き方はいくらでもあるかと思いますが、なかなかRubyでコード公開している人いないので、誰か拾い上げてもらえればといった希望も持ってます・・・

# コード紹介

“`Ruby
j = 0
while j < 9 do if j <= 6 if mcntr[j] == 2 && (mcntr[j+1] <= 1 && mcntr[j+2] <= 1) jantocnt += 1 mcntr[j] -= 2 end if pcntr[j] == 2 && (pcntr[j+1] <= 1 && pcntr[j+2] <= 1) jantocnt += 1 pcntr[j] -= 2 end

元記事を表示

AWS EC2で立ち上げたRails(unicorn)サーバーのログ確認方法

## 前提条件
RailsアプリをEC2(unicorn)にデプロイして、サーバー起動済みの場合のログ確認方法

## 結論
該当アプリのlogディレクトリで以下のコマンドを実行すればOK
“`terminal:terminal(EC2インスタンス内)
$ tail -f production.log
“`

## 詳細
デプロイしたリポジトリで以下のコマンドを実行してください!
“`terminal:terminal(EC2インスタンス内)
$ ls
Gemfile Gemfile.lock README.md Rakefile app bin config config.ru csv db lib log public spec storage tmp vendor

$ cd log

$ ls
production.log unicorn.stderr.log unicorn.stdout.log

$ tail -f production.log
以下にサーバーのログが流れてくる
“`

## tailコマンドについて
ファイルの

元記事を表示

Dockerを使ってRuby on Railsの環境構築をしてみた

# はじめに
DockerもRuby on Railsもどちらも扱ったことがなかったので、
まとめて学習できれば良いなと思ったのがきっかけです。
今回は簡単な画面表示までをやっていきます。
※Windows環境です

# 必要なファイルの用意
docker-sampleというディレクトリを作成し、この中で作業していきます。
まず、以下4つの空ファイルをディレクトリ直下に作成します。
Dockerfile
docker-compose.yml
Gemfile
Gemfile.lock
entrypoint.sh

““
docker-sample/
   ├─ Dockerfile
   ├─ docker-compose.yml
   ├─ Gemfile
   ├─ Gemfile.lock
   └─ entrypoint.shDockerfile
““
各ファイルの中身はこの後設定していきます。

# Dockerfileの設定
DockerfileとはDockerイメージを作成するための設計書のようなものです。
今回は以下の内容で作成します。

““
FROM ru

元記事を表示

OTHERカテゴリの最新記事