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

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

【個人開発】Twitterで映える!ファンレターを交換・シェアして楽しめるサービス『ご縁箱』をリリースしました✧˖°。

# はじめに…

### ▼ Twitterを使う上で このように感じたことはありませんか?
『 今あるご縁を大切にしたい 』
『 フォロワーさんと感謝の気持ちを伝えたり、交流を深めたい! 』
『 あの人に話しかけてみたい! 』

けどきっかけがない..ちょっと億劫かも…

こういった問題も楽しみながら解決出来る『 ご縁箱 』というサービスを開発しました。
### ▼ ご縁箱を使うとどうなる?
##### 実際に使ってみて…
– まだ話したことがなかったフォロワーさんと話すきっかけになった
– 色んなメッセージを頂いてほっこりした気分になった
– 自分の率直な気持ちをレターを送って伝えることで喜んでもらえた
– ご飯の約束ができた(全部焼き肉)

仲良しユーザーとの交流も深めることも出来ますが、まだ交流が出来ていないユーザーともコミュニケーションを取るきっかけにすることも出来るサービスです。
![TOP_TITLE.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1191858/b4c03

元記事を表示

Rails7のapiモードでGraphQLを使ってみた

# 目的

Rails で GraphQL を使うときはどんな感じに書くのかを確認する

# 必要なもの

– Docker(今回使用バージョン: Docker version 20.10.12, build e91ed57)
– VSCode(Remote Develpment 拡張機能を使用, 今回使用バージョン: Version: 1.64.1)
– ブラウザ(今回は Chrome バージョン: 98.0.4758.80(Official Build) を使用)

# 開発環境構築

## VSCode を起動して Dockerfile を作成し仮想環境を起動する

VSCode で開発用の空フォルダを開く(ここでは /dev/rails_graphql とする)

Ruby 環境の Dokerfile を作成する

“`dockerfile:/dev/rails_graphsql/Dockerfile
FROM ruby
“`

VSCode のコマンド Reopen in Container で From Dockerfile から仮想環境に切り替える

## rails

元記事を表示

Rails 7 + MySQLの環境構築をDocker composeで作る

二年前に[Rails 6 + MySQLの環境構築をDocker composeで作る](https://qiita.com/croquette0212/items/44378e01de18f62d01df)という投稿を書いたが、Rails 7ではWebpackerが廃止されるなど色々と変更点があったので、Rails 7用に書き直した。

Dockerの公式サイトには[Railsアプリケーション用のDocker composeチュートリアル](https://docs.docker.com/compose/rails/)があるが、少し情報が古くRails 7ではうまく動かなかったので、Rails 7で動かすための方法を載せておく。基本は公式チュートリアルの手順に従っているため、Rails 7用に変更したところを中心に補足を入れている。

DBはPostgresではなくMySQLを使う方法を載せておく。

# プロジェクトディレクトリの準備

“`sh
mkdir myrailsapp
cd myrailsapp
“`

# 設定ファイルの準備

“`Dockerfile

元記事を表示

ANSI Color Code一覧をPython3で見た件とその知見

すでに既出な題ですが、僕好みなColor一覧がなかったのであえて作成することにしました。 その際の副産物をここに投下いたします。

## 即使えるコピペ用Color Codeスニペット

「文」という部分を置き換えて使います

“`shell
“\033[30m文\033[0m”
“`

“`shell
“\033[31m文\033[0m”
“`

“`shell
“\033[32m文\033[0m”
“`

黄色

“`shell
“\033[33m文\033[0m”
“`

“`shell
“\033[34m文\033[0m”
“`

マゼンタ

“`shell
“\033[35m文\033[0m”
“`

元記事を表示

strip,chomp,chopメソッド

## stripメソッド
stripメソッドに関しては、以前記事を書いたので[こちら](https://qiita.com/wangqijiangjun/items/2c3d9f61afed9d7ecddf)を参照してください

簡単にいうとstripメソッドは、文字列の先頭と末尾の空白や改行をすべて消してくれるメソッドでしたね。

## chompメソッド
このメソッドは、末尾の改行コードを削除するメソッドです。
以下のような結果が返ってきます。
“`
a = “RubyOnRails \r\n”
a.chomp
=> “RubyOnRails ”
“`
このように、改行コードが削除されます
## chopメソッド
chopメソッドは文字列の末尾の1文字を削除します。
chompメソッドの違いは、末尾の1文字に改行コードがあるかないかに関わらず、末尾の1文字を削除します。
文字列の終端が “\r\n” であればその 2 文字を取り除きます。
“`
a = “RubyOnRails \r\n”
a.chomp
a = “RubyOnRails”
a.chop
=> “RubyOn

元記事を表示

scopeとクラスメソッド

実務でscopeというものをちゃんと理解していなかったので、記録しておこうとおもいます

## モデルのscope
モデルへのメソッド呼び出しとして、よく使われるクエリをまとめたメソッドです。
実際に使い方を見てみましょう

“`
class User < ApplicationRecord scope :hoge, -> { where(name: ‘hoge’) }
end
“`
これは、以下のコードと同じです。
“`
User.where(name: ‘hoge’)
“`
このコードの名前をhogeという名前で使えるんです。つまり、
“`
User.hoge
“`
というメソッドが使えるようになります。

これのメリットは、メソッドが長くなった時可読性が落ちないし、直感的になりますよね

公式化すれば、以下のようになります
“`
class モデル名 < ApplicationRecord scope :スコープ名, -> { 条件式 }
end
“`

## scopeとクラスメソッドの違い
クラスメソッドは、以下のようなコードです
“`
class

元記事を表示

sketchupでruby その21

#概要

sketchupでrubyやってみた。
make_fur使ってみた。

#写真

![make.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18104/c6292bbb-a024-ad2e-4abc-4c8f0b52ff39.jpeg)

#サンプルコード

“`
def glowup(preview = false)
@finstance = “yes”
@funits = “funits”
@camera = Sketchup.active_model.active_view.camera
@fdensity = 10.0
@flength = 10.0
@frootw = 10.0
@fvradius = 10.0
@maxnum = 10
@fforce = Geom::Vector3d.new(0.0, 0.0, 0.05)
@fdirection = Geom::Vector3d.new(0.0, 0.0, 0.05)
@ftype = “ftype

元記事を表示

Ruby on Rails チュートリアル第6章をやってみて

#ユーザーのモデルを作成する
■第6章
第5章では、新しいユーザーを作成するためのスタブページを作ったところで終わった。本章では、一番重要なステップであるユーザー用のデータモデルの作成と、データを保存する手段の確保について学んでいく。

Railsでは、本番アプリケーションに適した認証システムを自分で構築するアプローチも選択できる。筆者曰く、自分自身で認証システムを構築した経験があれば仕組みを理解し、必要に応じて変更することがずっと容易になるらしい。

##6.1 Userモデル
ユーザー登録でまず初めにやることは、それらの情報を保存するためのデータ構造の作成。
Railsは、データベースの細部をほぼ完全に隠蔽し、切り離してくれる。
本書ではSQLiteを開発環境で使い、また、PostgreSQLを(Herokuでの)本番環境で使う。

###6.1.1 データベースの移行
この節での目的は、簡単に消えることのないユーザーのモデルに構築。
Railsはデータを保存する際にデフォルトでリレーショナルデータベースを使う。リレーショナルデータベースは、データ行で構成されるテーブルからなり、各

元記事を表示

【2022年版】HerokuでRailsの画像が表示されないときの適切な対処法(と間違った対処法)

## はじめに
HerokuにRailsアプリをデプロイすると、以下のようなトラブルがよく発生します。

– ローカルでは表示されていた画像( `app/assets/images/` に保存していた画像)が表示されない!
– 画像が表示されるはずのページで、”The page you were looking for doesn’t exist.”というエラー画面が出た!

そこで「Heroku 画像 表示されない」のようなキーワードで検索すると、この問題の対処法が載ったページがたくさん表示されます。しかし、以下のような情報が載っているページは間違いです。

> **?これは間違い!!**
> `config/environments/production.rb` を開き、 `config.assets.compile = false` の値を `true` に変更しましょう。

以下の対処法が載っている場合も多いですが、これもやはり間違いです。

> **?これも間違い!!**
> `bin/rails assets:precompile RAILS_ENV=production`

元記事を表示

Herokuでアプリを公開する

概要

Herokuでアプリケーションを公開=「デプロイ」する。

1. Herokuにコミットする

① CLIでHerokuを操作するため、HerokuのCLIをインストールする。
herokuというコマンドが使用できる。

“`
% brew tap heroku/brew && brew install heroku
“`

②インストールできたか確認

“`
% heroku –version

⇨ heroku/7.40.0 darwin-x64 node-v13.15.1

“`

上記のように、バージョンが確認できれば、インストール成功!

③ Herokuにログインする

“`
% heroku login –interactive
=> Enter your Heroku credentials.
# メールアドレスを入力し、エンターキーを押す
=> Email:
# パスワードを入力して、エンターキーを押す
=> Password:

⇨ Logged in as 登録したメールアドレス
“`
上記のように表示されれば、ログイン成

元記事を表示

renderにおけるオプション

インターンで実務に入っていた時にcollectionとlocalsについて理解が浅かったので、まとめようとおもいます。
以下のような例を見てみましょう

## localsオプション
“`books_controller.rb
def index
@book = Book.find(params[:id])
end
“`
“`index.html.erb
<%= render partial: "form", locals: { book: @book } %>
“`

“`_form.html.erb

本のタイトルは、<%= book.title %>です。

本の内容は、<%= book.content %>です。

“`

“`locals: { book: @book }“`の部分は、
index.html.erbファイル内の“`@book“`を部分テンプレート先でbookという名前で使えるようにするよ、というのがlocalsオプションです。
実際に、“`_form.html.erb“`内では、bookという名前で使われています

元記事を表示

【Rails/Heroku】H10 – App crashedエラーの対処法

こんにちは。
まだ駆け出していない修行僧です。

Herokuへデプロイする際、アプリケーションエラーによりブラウザで表示されない事象が発生したので、ここに解決した手順を記したいと思います。

尚、指摘箇所がございましたら
愛あるご教授を頂けますと幸いです。

#結論
先に結論だけお伝えし、詳細は以降で述べていきます。
Gemfileに下記コードを入力することで、無事解決しました。

“`
gem ‘net-imap’
gem ‘net-pop’
gem ‘net-smtp’
“`

#環境
MacBook Air(M1,2020) Monterey 12.0.1
Ruby 3.1.0
Rails 6.1.4.6
Heroku 7.59.2

#エラーコード
まずはどんなエラーが発生したのか見ていきます。
HerokuにRailsアプリを以下のコマンドでデプロイを実施しました。

“`ターミナル
$ git push heroku HEAD
“`
そして以下のコマンドを入力してブラウザで確認をします。

“`ターミナル
$ heroku open
“`

するとアプリケーシ

元記事を表示

2/12教科書11 Ruby Sinatra

– アプリは⓵データベース②アプリの2つに分かれていて、2つは独立して考える

– 「\」→ option + ¥

– quit.com と quit.com/ は一緒

データベースに関して

→ rake db:create データベースの作成
 rake db:drop データベースの削除
 rake db:migrate migrationファイルの中身を読み込む。データベースができた後に、追加の情報や変更をするときに使う

バリデーション

ex)エラー:情報入力してログインボタンを押したら、最初の画面に戻った。

行われていること:
①ログインボタンを押す
→ログインボタンの実装
②情報が送られる
→ページが飛ぶ。今回だと”/signin”。
 app.rbに書かれた順序を踏んで処理が行われる。
③処理が終わったら、違う画面に飛ぶ
 処理がうまく行われなかったら、初めの画面に戻る。

疑う順番:
①ログインボタン
②ログインの情報を投げる先

今回の場合
①問題なし
→コードに間違いがなかった
②問題あり

sign_in.erbより、フォームが”/signi

元記事を表示

【初学者】Ruby on Railsのローカル開発環境を構築してみた【Webアプリ開発の道~その1~】

# はじめに
こんにちは。
最初の[記事](https://qiita.com/kosukein38/items/d3e57bdc345441f73241)で書いたとおり、Webアプリを開発するためにバックエンドでRuby on Railsを使っていきたいと思います。

私のRails理解度は現時点でRailsチュートリアルを解説動画を購入して、見ながら一通りほとんどコピペで終わらせ、その後ProgateのRails5講座をダーっと終わらせたくらいのレベルです。
チュートリアルと同じSampleAppをもう一周丁寧にする選択肢もありますが、同じものを作るのもなんとなく嫌なので、チュートリアルをベースにして改変しながら、自分のオリジナルアプリを制作していこうと思います。

Railsチュートリアルでは推奨環境のAWS内でCloud9を用いて開発しましたが、自分のWebアプリを開発する環境として何が最適か迷っていました。DockerやAWSのリソースを使って環境構築することも視野に入れましたが、おそらく、あれもこれもと手を出していくとハードルが高くなっていきそうだなと感じたので、まずローカ

元記事を表示

[ActiveJob]Jobの中でbinding.pryする方法

# binding.pry in Job

Jobの中をデバッグしたいのにできない。
そんな僕のために記事を残します。

# 2種類

## 1. perform_now

Jobのperformメソッドが`perform_later`メソッドから呼び出されていたら

一時的に`_now`に変えればOK!

すぐにJobを実行させることでpryができるようになる

“`rb
.perform_now
“`

## 2. アダプタのコンテナに接続する

dockerで開発されている方限定になってしまいますが、

sidekipなどの使用しているアダプターのコンテナに接続すればOKです!

元記事を表示

【Rails 6】simple_calendar でシンプルなカレンダー機能を作ってみる

## 概要

「[simple_calendar](https://github.com/excid3/simple_calendar)」 という gem を使ってシンプルなカレンダー機能を Rails アプリに実装してみます。

## 完成イメージ

![タイトルなし.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688854/e6107b2b-86ec-8dde-17db-f9a155058a44.gif)

## 仕様

– Ruby 3
– Rails 6
– MySQL 5.7
– Bootstrap 5
– Docker

※ Bootstrap はバージョン5から JQuery が不要になり導入方法が少し変わったのでご注意ください。

## 下準備

まず最初に下準備から始めていきます。

### 各種ディレクトリ & ファイルを作成

“`
$ mkdir rails-simple-calendar-app && cd rails-simple-calendar-app
$ touch

元記事を表示

[メタプログラミングRuby] アトリビュート生成時にバリデーションを実行するクラスマクロを実装してみました

## 実装したいこと
– メタプログラミングRubyのP145〜146あたりの問題を実装してみました
– ざっくりとした用件は以下になります
– attr_accessor のようなアトリビュートのセッター/ゲッターを提供するメソッドに、妥当性を検査する処理を記述した任意のブロックを渡せるようにする。
– 影響範囲を限定するため、モジュールに実装してincludeしたクラスのみに適用するようにする

## モジュールの実装
“`ruby
module CheckedAttributes
# モジュールをincludeしたクラスに、attr_checkedをクラスメソッドとして定義する
def self.included(klass)
klass.extend(SingletonMethods)
end

module SingletonMethods
def attr_checked(name, &blk)
define_method “#{name}” do

元記事を表示

Ruby on Rails チュートリアル第5章をやってみて

#レイアウトを作成する
■第5章
この章では、アプリケーションにBootstrapフレームワークを組み込み、そして、カスタムスタイルを追加する。
また、これまで作成したページ (HomeやAboutなど) へのリンクをレイアウトに追加する。

##5.1 構造を追加する
レイアウトにいくつかの構造とCSSを与えて、最小限のスタイルを追加する。カスタムCSSルールの他に、Twitter社によるオープンソースのWebデザインフレームワークとして公開しているBootstrapも利用する。

この章では、サイトロゴ、ナビゲーションヘッダー、サイトフッターを含む静的ページを開発する。

###5.1.1 ナビゲーション
第一段階として、サイトのレイアウトファイル`application.html.erb`にHTML構造を追加し、レイアウトファイルを更新する。

サイトのロゴを表示する`header`

“`

元記事を表示

Materializeでのvaliate方法について

###Materializeとは

https://materializecss.com/about.html

###Materializeでのvaliate方法について

inputセレクタとselectセレクタを使ったvalidate方法はやり方が異なります。
それぞれのやり方を以下に整理しました。

#### 前提

– Materialize バージョン: 1.0.0
– inputセレクタ、selectセレクタのタグの後に、helper-textクラスを使ったタグにてエラーメッセージの表示を行う

#### inputセレクタのvalidate

##### 必須入力チェック

inputセレクト内で、classに’validate’を指定し、かつrequiredを指定すると、
Materializeでバリデーションがかかる。

“`

rangeオブジェクト ruby

“`irb
irb(main):008:0> (“あ”..”を”).to_a.sample
=> “か”
irb(main):009:0> (“ア”..”ヲ”).to_a.sample
=> “ギ”
irb(main):005:0> (1..7).to_a.sample
=> 6
“`

元記事を表示

OTHERカテゴリの最新記事