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

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

[Rails]ActionCableでリアルタイム機能を実現してみた

# はじめに
Action Cableは、 WebSocketとRailsのその他の部分をシームレスに統合するためのものです。ちなみに、WebSocketとは、Webにおいての双方向通信を、従来のHTTP等よりも低コストで行うための仕組み。

# 事前知識
## コンシューマー
WebSocketコネクションのクライアント。複数のケーブルチャネルにサブスクライブできます。

## Pub/Sub
パブリッシャ-サブスクライバ(pub/sub)型モデルとも呼ばれる、メッセージキューのパラダイムです。`パブリッシャ側(Publisher)が、サブスクライバ側(Subscriber)の抽象クラスに情報を送信`します。

## 購読(subscription)
クライアントがWebsocket通信を通じたチャネルと関連付け。購読は、一度に複数のチャネルに対して作成可能。

## app/channels/〇〇_channel.rb
Websocket処理におけるコントローラーのような役割を果たす。

“`ruby
class RoomChannel < ApplicationCable::

元記事を表示

[Rails]ローディング(ロード画面)の実装

おしゃれなサイトはローディングをよく実装していますので、今回はポートフォリオにて実装してみました。

思ったよりかんたんに実装できて、サイト全体の雰囲気がアップするのでおすすめです!

参考にしたサイトは以下で、「1.【サンプル】ローディング(テキストだけでふわっと)」をRailsのアプリケーションに落とし込んで解説していきます。
[【jQuery】 ローディング、実装サンプル集](https://125naroom.com/web/3835)

#開発環境

> ruby 2.6.3
> Rails 5.2.6

#実装方法

今回はHTMl,CSS,JavaScriptを使ってローディングを実装していきます。
ではいってみましょう〜!

#ビュー
まずはビューから、このビューのid名、class名に対してCSSやJavaScriptをあてていきます。

今回はhomes/topで実装。

`1番上の行`から記述していってください。

“`erb:views/homes/top.html.erb

元記事を表示

Rubyでトリボナッチ数列をパッと出したい

#はじめに

はじめまして、某WEBCAMPの生徒です。
初投稿なので至らない部分が多いと思いますが、疑問点や間違っている部分がありましたら教えていただけると嬉しいです。

現在就活中ですが、どうやら面接の前にプログラミングスキルを測る企業があるらしく、そこではトリボナッチ数列に関する問題が出るみたいです。

そのため本記事では、Rubyを使ってトリボナッチ数列を出したいと思います。
#トリボナッチ数列とは
トリボナッチ数列は[0, 0, 1]から始まり、その後の項が前3つを足したものになる数列です。
“例:[ 0, 0, 1, 1, 2, 4, 7, 13, 24, 44, 81]“
“81 = 13 + 24 + 44“

#トリボナッチ数列で数字を取り出す!
今回は、「n項目」のnに値を入力するとその項の数字が出るようにしていきます。

また、コードを書くにあたって
https://yu8mada.com/2018/06/23/how-to-calculate-fibonacci-numbers-in-ruby/#content-1-4
のフィボナッチ数列のコードを参考に

元記事を表示

[Rails]Action Textでリッチテキストを作ろう!

# はじめに
Rails6で追加されたActionTextにリッチテキストコンテンツと編集機能を導入出来ます。
今までは自分で実装していたので、便利な機能だと思い、使い方を調べてみました!

# 使用方法
1.ActionTextのセットアップを行い、`rails db:migrate`を実行する。

“`bash
$ rails action_text:install

$ rails db:migrate
“`

2.埋め込み画像や他の添付ファイルを扱うため、ActiveStorageのセットアップを行う。

[参考]

https://qiita.com/ren0826jam/items/58bdbaff17581280ee5a

3.使用するモデルにリッチテキストのフィールドを追加する。

“`app/models/message.rb
class Message < ApplicationRecord has_rich_text :content end ``` 4.ビュー側でヘルパーメソッドを使用する。 ```ruby <%= form_with(model:

元記事を表示

each_with_indexの使い方について

eachループしつつ、それぞれデータに番号を振り分けて全体で何番目という風な記述にしたい場合に何か良いのがないか探してみたところ
便利なeach_with_indexというメソッドを見つけることができましたのでアウトプットがてら紹介したいと思います。

#each_With_indexの使い方

“`ruby.html.erb
<% @users.each_with_index do |user, i| %>
<%= "#{user}は、 #{i+1}位:" %>
<% end %>
“`

“`出力結果
userは(iに1プラスした値)
“`

なおindexは0から始まるため+1にしてますが、初期値の0から始めたい場合は{i}だけで大丈夫です。

元記事を表示

Ruby ヒアドキュメント

##ヒアドキュメントの書き方
複数の文字列を出力したい場合ヒアドキュメントを使うと楽に出力出来ます。

“`
puts <<~a おはよう こんにちは こんばんは a ``` 出力結果 ``` おはよう こんにちは こんばんは ``` 文字列を囲ってるaは同じワード使っていれば記号以外であればOK

元記事を表示

Notion の APIライブラリ「notion_ruby」の使い方

[Notion API](https://developers.notion.com)が公開されたので非公式のRubyクライアント「notion_ruby」をオープンソースで公開しました。

[notion_ruby](https://github.com/decoch/notion-ruby)

ソースコードは公開しているので Issue / Pull Request をお待ちしております。

https://github.com/decoch/notion-ruby

## 基本的な使い方

### ライブラリのインストール

Bundler を使っている場合は Gemfile に追加して `bundle install` します

“`ruby
gem ‘notion_ruby’
“`

使っていない場合は `gem install notion_ruby` します。

### Notion の Tokenを発行する

[My Integrations](https://www.notion.so/my-integrations) からTokenを作成します

![notio

元記事を表示

ローカルと本番環境で挙動が違う時の対処法

ローカル環境での動作はバッチリ!
次に本番環境で動作確認していると、あれ、、思うように動かない。

考えられる原因の仮説として、
ローカル環境では動いているということでコードに問題はないとして、githubのmasterブランチにあげ忘れかな?

確認してみたものの全てmergeしている、、
なんでだろう、、

そうだ!思い切ってDBをリセットしちゃおう!!

“`
#dbのリセット
heroku run DISABLE_DATABASE_ENVIRONMENT_CHECK=1 rails db:drop db:create db:migrate

#herokuの再起動
heroku restart

#herokuに再アクセス
heroku open
“`

コマンド入力後再度動作確認すると、無事正常に動いている!
偶発的な問題だったみたいです。

皆さんもぜひ試してみてください:thumbsup_tone1:

元記事を表示

priceのバリデーションを半角数字だけ適応したい

#はじめに
投稿内容に金額(price)を入力する欄を作りました。

しっかり半角数字のバリデーションを定義したのに全角でも入力できてしまったので解消法を投稿します。

#やってしまったミス

“`rb
class Review < ApplicationRecord with_options presence: true do validates :faclity_name, length: { maximum: 40 } validates :images validates :price, format: { with: /\A[0-9]+\z/ } end end ``` このように`price`に空だと投稿できない、半角数字でなければ投稿できないバリデーションを定義しました。 しかし全角文字でも投稿ができてしまいました。 #解決方法 **数値のみ**というバリデーションがありました。 ``` numericality: ``` 今回は0円から9,999,999円までまでは投稿できる設定にしたいので以下のように記述しました。 ``

元記事を表示

【Rails】カートモデルの代わりにsessionを使ってカート機能を実装する

#はじめに#
####簡単な自己紹介####
はじめまして、shunと申します。
善良で健康な23歳です。
現在、「私立探求学園」というプログラミングスクールの「Rails共同開発プログラム」に2期生として参加しております。
プログラミング歴は執筆時点で3ヶ月ほどです。

Qiitaに記事を投稿するのは今回が初めてになります。
そのため、専門性に欠ける部分や読みづらい点が多々あるかとは思いますがご容赦ください。

#本記事の内容#
###カート機能を実装する###
ECサイトでよく目にするカート機能を実装します。
今回実装するカート機能では以下の事が可能です。
本稿では主にコントローラに焦点を当てて解説します。

**① 「カートへ」ボタン押下で商品をカートに入れる。
② カート内商品を表示する。
③ カート内商品の個数変更[^1]、商品削除ができる。
④ 「購入する」ボタンを押下でカート内を空にして購入完了画面を表示する。
⑤ 購入完了画面で注文番号を表示する。**

###本記事の特徴###
本記事では、カート内で商品情報を出し入れする際には**カートモデルを使用しません。**

元記事を表示

CentOS 7にRuby 3.0をインストール(SCL)

# はじめに

Software Collection(SCL)を利用してCentOS7にRuby 3.0をインストール
参考:[Quick Start — Software Collections](https://www.softwarecollections.org/en/docs/)

## サポート

本手法で導入した場合、[Red Hat Software Collections Product Life Cycle – Red Hat Customer Portal](https://access.redhat.com/support/policy/updates/rhscl)より、2024-06がEOLだと思われる。
それ以降に報告された脆弱性や不具合への対応は実施されない可能性がある。

## LOG

### レポジトリ登録

“`shell-session
# yum install -y centos-release-scl
“`

### インストール

“`shell-session
# cat /etc/redhat-release
CentOS L

元記事を表示

【Ruby】電話帳作成問題を解いてみた!

[アウトプットのネタに困ったらこれ!?](https://blog.jnito.com/entry/2019/05/03/121235)
 こちらの記事を参考にして、今回は「電話帳作成問題」を解いてみました。とりあえず「動くだけ」のコードでもいいから、自分で最後まで考えて解きたいという気持ちで望んでいます。初めから効率的なやり方を考えたわけではなく、場当たり的に課題に対処したため、コードとしては不適切な部分があります。ご意見いただけるとありがたいです。

“`
#INPUT
[‘キシモト’, ‘イトウ’, ‘ババ’, ‘カネダ’, ‘ワダ’, ‘ハマダ’]

#OUTPUT
[ [‘ア’, [‘イトウ’]], [‘カ’, [‘カネダ’, ‘キシモト’]], [‘ハ’, [‘ハマダ’, ‘ババ’]], [‘ワ’, [‘ワダ’]] ]

“`

 このように、カタカナ文字列の配列を渡すと、ア段の音別にグループ分けした配列を返すプログラムを作成する問題になります。

 コメントを参考にして1部修正して、最終的にこのようなコードになりました。

“`ruby
def phone_b

元記事を表示

【Ruby】puts print pメソッドの違い

## はじめに
Rubyの知識を深く学びたい!と思い、『プロを目指す人のためのRuby入門』を使い学習を始めました。新たな学びや気づきをアウトプットします。

今日のテーマは、ターミナルへの出力でよく使われる「puts・printメソッド・pメソッドの違いってなんだろう?」についてです。

## 3つのメソッドを使って出力し違いを比べてみよう

* `puts`を使った出力

“`ruby
irb(main):001:0> puts 123
123
=> nil

irb(main):002:0> puts ‘abc’
abc
=> nil
“`

* `print`を使った出力

“`ruby
irb(main):003:0> print 123
123=> nil

irb(main):004:0> print ‘abc’
abc=> nil
“`
`puts`と違う点は改行されていない点にあります。

* `p`を使った出力

“`ruby
irb(main):001:0> p 123
123
=> 123

irb(main):002:0>

元記事を表示

Herokuでデプロイ後の画面表示エラー

## Herokuエラーのまとめ
ローカル環境では問題がなかったのに、
Herokuにデプロイ後にエラーになってしまった時の対応をまとめました。

### 1.実例)エラー画面
![スクリーンショット 2021-07-12 16.13.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1335471/93edb069-baa3-2354-c980-0acf7fc7a35b.png)

エラー文章は
`We’re sorry, but something went wrong.`
`If you are the application owner check the logs for more information.`

### 2.とにかくエラーログを見ろ!
基本的に、エラー画面が出た時の対応はこちらです。

1.エラー画面が表示されたら作業ストップ
2.そのままターミナルへ移動
3.`% heroku logs`を実行
4.ログの下の行を見ていくと、エラーのHTTPステータスがある
5.HTTPの

元記事を表示

初学者がrailsで作ったウェブサイトをherokuでデプロイしたときに出たエラー「The page you were looking for doesn’t exist.」

herokuでウェブサイトを公開しようとしたときにでたエラーの話です。

デプロイまでの手順はhttps://qiita.com/misakigumi/items/68d3557c67739c552ef5
こちらの記事を参考にしました!

デプロイまでの手順も色々とエラーが起きましたが、
設定箇所
1. Gemfile
2. config/database.yml
3. config/environments/production.rb
この3つをしっかり確認して、エラーコードをみて修正するとなんとかうまくいきました。

そして

“`
% git push heroku master
“`
これを実施して、デプロイすると
「The page you were looking for doesn’t exist.」
「探していたページが存在しません。」

このままググってみると、ルートがうまく設定できていないと判明

記事の設定箇所に
4.config/routes.rb
rootページ(例:root ‘questions#index’)が設定されているか確認する(設定されていな

元記事を表示

テックキャンプを受講した感想

ご覧いただきありがとうございます。

昨年の10月からテックキャンプ短期集中コースを受講し、無事就活が終わったのでその感想を書きたいと思います。

まず初めに、就活めちゃめちゃ大変でした、、、

受講前に想像していたより何倍も上手くいかず、かなり大変でした。

コロナ禍ということもありますがエンジニアの供給が素人目からみても溢れていました。
その中でテックキャンプさんにはとてもお世話になりました。

プログラミングに興味があり、スクールに行くか、またどこのスクールに通うべきか考えておられる方もいると思いますので、

実際にテックキャンプを受講し、就職まで終えた私の思った

テックキャンプの
・よかったこと
・よくなかったこと
をご紹介したいと思います。

・よかったこと
①カリキュラムがわかりやすい
②メンターにすぐ聞ける環境
③同じ期生とのアウトプットがある

1つずつ説明していきます。

①カリキュラムがわかりやすい
普通であれば教室に通い学習をするはずだったのですが、コロナの関係で私は完全オンラインで学習をしていました。(希望者は週に数回教室利用可)
オンラインだと理解しにくか

元記事を表示

Rails6でデータベースをpostgreSQLに変更したその後のエラー

##開発環境
Railsアプリケーションの開発
Rails ver. 6.1.3
Ruby ver. 2.6.3
postgreSQL ver. 13.2

##エラー①
Rails6ではデータベースの変更がコマンド1つでできるので、
こちらの方の記事を参考に
https://qiita.com/vinaka/items/fbdb17bebe75d40de995

Herokuへデプロイする予定なのでデータベースをdevelopment、production含め
一括でpostgreSQLに変更しようと考えた
以下のコマンドを実行し、bundle install

“`
$ rails db:system:change –to=postgresql
$ bundle install –clean
“`
railsサーバーを起動すると

“`
ActiveRecord::ConnectionNotEstablished (could not connect to server: No such file or directory
Is the server runnin

元記事を表示

[Rails]タブと無限スクロール機能の両立(kaminariとjscroll)

今回はタブ機能と無限スクロール機能を実装したけど、無限スクロールで表示される要素がダブったり、表示されなかったりといった不具合が発生している方向けに発信していきます。

ぼく自身がこの不具合にだいぶハマってしまったので、同じような不具合にハマってる方の役にたてれば幸いです。

#開発環境

> ruby 2.6.3
> Rails 5.2.6

#前提

– 投稿サイトを想定
– 無限スクロールはkaminariとjscrollで実装
– タブはCSSとJavaScriptで実装

無限スクロールとタブ機能の実装は以下記事の実装方法を使用。
[[Rails]kaminariとjscrollを使って無限スクロールを実装](https://qiita.com/nakachan1994/items/1edc7a03e36bc00992c5)
[[Rails]CSSとJavaScriptを使ったタブ切り替え機能](https://qiita.com/nakachan1994/items/566cfcb60376feb3fe8c)

モデル名、変数名等は適宜、ご自身の開発環境に変換してお考えく

元記事を表示

Array クラスの select メソッド

RubyのArrayクラスのSelectメソッドの使い方
Rubyで入力した値のうち、3の倍数のデータをa配列に追加して、a配列に入っている要素数をカウントするRubyプログラムです

“`Ruby
n = gets.to_i
a = gets.split(‘ ‘).select { |n| n.to_i % 3 == 0 }

puts a.length
“`

この方法は知らなかったので勉強をかねてQiitaブログに掲載いたします。

元記事を表示

[Rails]Action Mailboxとはメール受信時の処理を行うライブラリ

# はじめに
Rails6から追加された、メール受信時の処理を行う機能を提供するAction Mailboxというライブラリ。比較的新しい機能で使う機会がなかったのですが、機会が巡ってきたので、備忘録を書こうと思います!

# 対応するメールサービス、メールサーバ
– Mailgun
– Mandrill
– Postmark
– SendGrid
– Exim
– Postfix
– Qmail

# 利用方法
※今回は本番環境でSendGridを利用することを想定して実装します。

1.ActiveJobので読み込むキューを設定する。

“`config/sidekiq.yml
:queues:

– action_mailbox_routing
– action_mailbox_incineration
“`

2.ActiveStorageの保存先をクラウドストレージサービス(S3等)に変更する。

3.Action Mailboxのセットアップを行う。

“`bash
$ rails action_mailbox:install

$ rails db

元記事を表示

OTHERカテゴリの最新記事