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

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

Dockerを使用したWebアプリケーションの開発環境を改善し開発者体験を良くする

:::note info
[LITALICO Advent Calendar 2022](https://qiita.com/advent-calendar/2022/litalico) 18日目の記事です
:::

# 対象読者
– 開発者体験をもっと良くしたいと考えている開発者・マネージャー
– 開発環境をもっと早くしたいと考えている方
– 最近RailsやLaravelの起動が遅くて困っている方
– フロントエンドのビルドが遅くてイライラする方
– Mac使用者(Windowsユーザーの方にも参考にできる部分はあると思います)
– Docker DesktopやRancher Desktopの遅さにうんざりしている方

# この記事について
この記事は「開発環境を改善し開発者体験を良くする」をテーマとしており、
開発環境を遅くしている原因と、それに対する解決策が書いてあります。

想定は以下の通りですが、そうでない場合も有効な案はあると思います。
– バックエンドはRailsやLaravelなどのWebフレームワークを使用している
– フロントエンドはVueやReactな

元記事を表示

「たのしいRuby」オブジェクト指向の特徴

Rubyの本、買ってきた。「たのしいRuby」勉強しながらtwitterに投稿した文を加筆訂正してQiitaに投稿する。今回はオブジェクト指向の特徴。
Twitter、Green_helmet@bethlehem4099
## 参考文献
この記事は以下の情報を参考にして執筆しました。
-[たのしいRuby、高橋征義、後藤裕蔵著、 まつもとゆきひろ監修、SBクリエイティブ株式会社、第6版2019年](https://www.amazon.co.jp/%E3%81%9F%E3%81%AE%E3%81%97%E3%81%84Ruby-%E7%AC%AC6%E7%89%88-%E9%AB%98%E6%A9%8B-%E5%BE%81%E7%BE%A9-ebook/dp/B07PNN3TYF/ref=tmm_kin_swatch_0?_encoding=UTF8&qid=1671278506&sr=8-1)
-[『たのしいRuby 第6版』サポートページ、ソースコード](https://tanoshiiruby.github.io/6/index.html)

### オブジェクト指向の特徴

元記事を表示

controllerのインスタンス変数をなんでviewでも使えるの?

## はじめに
Railsでは“`controller“`で定義したインスタンス変数を“`view“`側で使うことができますが、最近、ふと「これなんで?」と思ったのでrailsの中身を見てみようと思います。

## コードリーディング
作成される“`controller“`は“`ApplicationController“`を継承していて、“`ApplicationController“`は“`ActionController::Base“`を継承しているので、“`ActionController::Base“`を見にいきます。

“`actionpack/lib/action_controller/base.rb
# == Renders
#
# Action Controller sends content to the user by using one of five rendering methods. The most versatile and common is the rendering
# of a template. In

元記事を表示

Stimulus リファレンス: ライフサイクルコールバック

:::note
この記事は[Google翻訳](https://translate.google.co.jp/)の結果を編集したものです。
:::

https://stimulus.hotwired.dev/reference/lifecycle-callbacks

ライフサイクルコールバックと呼ばれる特別なメソッドを使用すると、コントローラーまたは特定のターゲットがドキュメントに接続したり、ドキュメントから切断したりするたびに応答できます。

“`javascript
import { Controller } from “@hotwired/stimulus”

export default class extends Controller {
connect() {
// …
}
}
“`

# メソッド

| メソッド | Stimulusによる呼び出し |
| :– | :– |
| initialize() | コントローラーが最初にインスタンス化されたときに1回 |
| [name]TargetConnected(target: Element

元記事を表示

【Rails6】レビューの平均値をレーダーチャートで表示する方法(gon、chartkick、chart.js)

# 概要
* Userが5段階評価ができる5つの項目のレビューを行うと、それぞれの平均値がレーダーチャートとなってトップビューに表示される実装を行ったので、その手順を記す。5段階評価機能については、別記事でまとめています。
* [【Rails6】5段階評価の星レビュー機能を実装する手順(raty.js)](https://qiita.com/Ryo-0131/items/63e81b13b9382690bee4)

# 前提
* 今回の実装においては、chart.jsとchartkick.js両方を利用する。利用先は以下の通り。
* トップビュー(/index):chartkick.jsでバーチャート表示
* 詳細ページ(/show):chart.jsでレーダーチャート表示
* JSとrailsの連携は、gem gonを利用する。(chartkick.jsはrails内で完結)

# データベース設計
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2710373/

元記事を表示

Ruby WASMを少しだけ触ってみる

Rubyをブラウザで動かせるようになったらしいです
日々Rubyを書いているエンジニアとしてはHello Worldぐらいはやってみたいので実行してみました

こちらのExampleを参考にやってみます

https://github.com/ruby/ruby.wasm/tree/main/packages/npm-packages/ruby-wasm-wasi/example

## Hello Wasm
ブラウザのコンソールにHello, Wasmと表示してみます

“`html:hello_wasm.html




“`

![1457d886ea54bab5894501c313193a5b.png](http

元記事を表示

RailsでWebアプリを作成する際に導入して良かった設計やgem

Rails で Web アプリを作成・運用していく中で、個人的に導入して良かった設計や gem を紹介していきます。
なお、本記事では特定のユースケースに絞った話ではなく、比較的どの Rails アプリでも利用できるような内容を書いていければと思いますので、参考になれば幸いです。

## Form オブジェクト

基本的には Rails Way、MVC と Rails 標準機能に沿った設計でシンプルに保つようにしてますが、Form オブジェクトについては導入しています。
特定のユースケースの処理(ビジネスロジック)をモデルから分割する目的で使用し、今回は自分がよく利用する ActiveRecord モデルを継承する方法を紹介します。
下記のようなイメージになります。

“`ruby:app/models/user.rb
class User < ApplicationRecord ... end ``` ```ruby:app/forms/user_registration_form.rb class UserRegistrationForm < User # モデ

元記事を表示

【Rspec】レシーバーの「FactoryBot」の記述を省略する設定

## FactoryBotの記述を省略し、よりコードをすっきりさせる
インスタンスを作成する記述のたびにFactoryBotを書く手間を減らし、よりコードをすっきりさせていきます。
“`ruby
user = FactoryBot.build(:user, fullname: “”)
“`
# spec/rails_helper.rbに省略する記述を追加
“`ruby:spec/rails_helper.rb
RSpec.configure do |config|
:
#下記の記述を追加
config.include FactoryBot::Syntax::Methods
:
end
“`

# 設定後
書く手間が減り、よりコードをすっきりさせることができました。
“`ruby
user = FactoryBot.build(:user, fullname: “”)

user = build(:user, fullname: “”)
“`

元記事を表示

RSpecでtravel_toを使ってみた

## はじめに
ポートフォリオの作成で初めてtravel_toを使ったので記事にしました。

## タイムゾーンを変更する
時間の変化を分かりやすくするため、タイムゾーンを日本に設定します。
“`ruby: config/application.rb
class Application < Rails::Application config.time_zone = 'Tokyo' end ``` ## travel_to putsで時間を表示させると、タイムスタンプが変わっていることが分かります。 ```ruby: spec/system/posts_spec.rb describe 'travel_toを使ってみた' do it '24時間前、現在、24時間後' do travel_to Time.zone.now.yesterday do puts Time.zone.now end puts Time.zone.now travel_to Time.zone.now.tomorrow do

元記事を表示

【Rspec】FactoryBotとは

# FacroryBotとは
Rspecでテストを行う際にテストデータの作成をサポートするGemです。
Gemfileで`group :test do ~ end`の箇所に`gem “factory_bot_rails”`記述し使用します。
FacroryBotを使用するには`spec/factories/モデル名.rb`といった形でファイルを作成します。

# 例
今回は仮にUserモデルを例にして作成します。
“`
% rails g factory_bot:model user(モデル名)
“`
gemのインストールができたら上記のコマンド入力することで`spec/factories/users.rb`が作成され以下の雛形が出来上がっています。
“`ruby:spec/factories/users.rb
FactoryBot.define do
factory :user do

end
end
“`
今回は名前とメールアドレスのダミーデータを作成する例として、テストコードを一つずつ見ていきましょう。
“`ruby:spec/factories/users.r

元記事を表示

RubyによるBrainf**k処理系を1行で!

# 概要

Rubyで一行で書くという縛りで、Brainf**kの処理系を書いてみました!
n番煎じの極みのような気がしないでもないですが、まあゆるしてちょ。
もっと改善できる余地があるかもしれないですが、もう見たくないです。

※ 作業環境のRubyのバージョンは以下のとおりです。
Ruby入ってなかったので、とりあえずその時の最新版入れました。
“`bash
$ ruby -v
ruby 3.1.3p185 (2022-11-24 revision 1a6b16756e) [x86_64-linux]
“`

# 結果
### 1行版
“`Ruby:brainfook.rb
require(‘io/console’);require(‘optparse’);->o,s:((o[‘s’].nil?)?((!o[‘f’].nil?)?(File.read(o[‘f’])):gets(nil)):o[‘s’]),step:o[‘step’]{->t:’><+-.,[]'.split('').zip([*1..8]).to_h,b:(s.split(/\R/).join.split(

元記事を表示

Ruby on Rails のバリデーション

## はじめに
株式会社ピー・アール・オーのアドベントカレンダー18日目を書きます。
個人的にRuby on Railsに触れる機会があったのでRailsのバリデーションについて書きたいと思います。
ちなみに弊社ではRubyの案件は自分の知る限りほとんどありません。PHP、Javaの案件が多い印象です。

だいぶ遅まきで、勉強し始めているのですがRails初学者の私からするとRailsのコードを見たときの第一印象は**コード量が少ない**でした。
コード量が少ないということは保守性に優れたコードであるということなのですが、
Railsを何も知らない人からすると逆にこれってどうやって動いてるの?となってしまうわけです。
新しく触れるフレームワークでは、いつもあることでお作法をよく理解することが一番だと思います。

お作法を理解するには先ずはRailsガイドよく読むのがよさそうでした。

ガイドを読んでいる中で割と最初の方に出てくるバリデーションの章が印象に残っているのでいくつか紹介したいと思います。

https://railsguides.jp/active_record_valida

元記事を表示

未経験からWebエンジニアに転職して苦労していること4選

未経験から独学を経てWebエンジニアに転職して、2ヶ月が経った。
まだ2ヶ月といえど、様々な苦労にぶち当たっている。
未経験からエンジニアを目指す人にとって、リアルで参考になると思うので、ぜひ読んでいってほしい。
あくまで**転職はスタート地点**だった。

▼転職活動の記録はこちら
**アラサー未経験が独学半年でエンジニア転職するまで**

# 自己紹介
超ひよっこRailsエンジニア
文系アラサー
独学してきたプログラミングは最低限レベル

+ 29歳
+ 大卒(文系)
+ 前職は医療系団体職員
+ バイトや派遣も経験
+ PC経験はOfficeソフトくらい

# 転職先

+ Web系受託開発企業(一部自社開発あり)
+ 社員数10名程度のベンチャー企業
+ フルリモート
+ 業務委託で就業中

# 1. 仕事が難しすぎる

未経験に合わせたタスクを振ってくれるが、それでさえ難しい。
コラッタを倒してねって草むらに入るとカイリューが出てくる感じ。

元記事を表示

Ruby+MechanizeでjsonデータをPOSTする方法

## 概要
Ruby+MechanizeでPOSTリクエストをしようと思ったのですが、調べてみるとフォームを選択して…ってやり方がたくさん出てきたので、そうではなく純粋なpostリクエストをする方法を紹介する

## だめだった例
### パターン1
自分がやってみて行けそうだったけどだめだった書き方
“`rb
require ‘mechanize’

agent = Mechanize.new
payload = {
text: ‘こんにちわ’
}
page = agent.post(‘https://xxx.yyyy.zzz’, payload)
“`
一見POSTできそうなのですが、
“`
/var/task/vendor/bundle/ruby/2.7.0/gems/mechanize-2.8.5/lib/mechanize/http/agent.rb:333:in `fetch’: 400 => Net::HTTPBadRequest for https://xxx.yyyy.zzz — unhandled response (Mechanize::Respo

元記事を表示

【悪戦苦闘】自社開発企業に入社してからの一年を振り返り、エンジニアに必要な要素を考える

# はじめに
どうもこんにちはもきお([@mokio_50](https://twitter.com/mokio_50))です。早いもので未経験からエンジニア転職し1年が経ちました。

なので今回は自社開発企業に入社してからの1年間を振り返り、エンジニアに必要な要素って何なのかを考えていきたいと思います。

自分自身の振り返りと自社開発企業での働く風景がどんなもんなのか少しでも感じてもらえたら幸いです。結構なボリュームになっているので何回かに分けて読んでいただいた方がいいかもしれません。

# 簡単な企業概要
イメージを持ってもらうために弊社のフワッとした企業概要を記載しておきます。
* 従業員200名前後
* 自社サービス4つ稼働中、来月より新サービス開発予定(Rails, React, TypeScript)
* 既存サービス:バックエンドRails、フロントHTML、CSS、JS、一部React
* データ分析でPython使用
* かなりDBのレコード数が多く検索が重くなるため、ところどこでElasticsearch使用

# 1年間に完了したタスク数
まず1年間にこなしたタス

元記事を表示

「たのしいRuby」モジュールとMix-in

Rubyの本、買ってきた。「たのしいRuby」勉強しながらtwitterに投稿した文を加筆訂正してQiitaに投稿する。今回はモジュール。
Twitter、Green_helmet@bethlehem4099
## 参考文献
この記事は以下の情報を参考にして執筆しました。
-[たのしいRuby、高橋征義、後藤裕蔵著、 まつもとゆきひろ監修、SBクリエイティブ株式会社、第6版2019年](https://www.amazon.co.jp/%E3%81%9F%E3%81%AE%E3%81%97%E3%81%84Ruby-%E7%AC%AC6%E7%89%88-%E9%AB%98%E6%A9%8B-%E5%BE%81%E7%BE%A9-ebook/dp/B07PNN3TYF/ref=tmm_kin_swatch_0?_encoding=UTF8&qid=1671278506&sr=8-1)
-[『たのしいRuby 第6版』サポートページ、ソースコード](https://tanoshiiruby.github.io/6/index.html)

# つぎ、Module
Rubyの売り、モジュ

元記事を表示

RedAmberでやろうとしていること

Rubyアドベントカレンダー2022の18日目の記事です。

タイトルにあるRedAmberとは何かについては、それぞれ違う例を使いながらqiitaとnoteに記事を書いたので良かったら見てみてください。

https://qiita.com/heronshoes/items/3e60ee24a436530ddaac

https://note.com/heronshoes/n/nafb267e9a99b

とってもざっくりと言うと、Pythonにおけるpandas、Rにおけるdata.frame, dplyr/tidyrがやるようなことをRubyでできるようにするライブラリです。

[2022年度Rubyアソシエーション開発助成](https://www.ruby.or.jp/ja/news/20221027)に採択されたプロジェクトとして開発を進めています。

今日は、RedAmberで私がやろうとしていることをお話しします。

## 1. Rubyでデータサイエンスしたい

一番の目的はこれです。Rubyはデータ処理の分野が弱いです。それでも書きやすいRubyでデータサイエンス

元記事を表示

SessionとCookie

## はじめに
Railsでは“`devise“`という、それはそれは便利な認証機能用の“`gem“`がありまして、それに頼り切ってしまっていたため“`cookie“`がどうとか“`session“`がどうとかという根本的な理解ができていませんでした。
それが最近バレてしまったので、この機会に“`session“`と“`cookie“`についてまとめたいと思います。

## Cookie
“`cookie“`は、ステートレスな“`HTTPプロトコル“`をステートフルにすることができる代物です。

元来、HTTPリクエストはステートレスであるため、前後のリクエストとの関係を持つことはなく独立したものです。
なので、1つ前のリクエストの内容を引き継ぐみたいなことができません。

これを解決するのが“`cookie“`です。
サーバーはリクエストがあると、以後同じ相手からのリクエストを特定するために“`set-cookie“`ヘッダーを付与してレスポンスを返します。
その後のリクエストでは、その“`set-cookie“`ヘッダーに指定された値を`

元記事を表示

Stimulus リファレンス: コントローラー

:::note
この記事は[Google翻訳](https://translate.google.co.jp/)の結果を編集したものです。
:::

https://stimulus.hotwired.dev/reference/controllers

コントローラーはStimulusアプリケーションの基本的な組織単位です。

“`javascript
import { Controller } from “@hotwired/stimulus”

export default class extends Controller {
// …
}
“`

コントローラーはアプリケーションで定義するJavaScriptクラスのインスタンスです。各コントローラークラスは`@hotwired/stimulus`モジュールによってエクスポートされた`Contoller`基底クラスを継承します。

# プロパティ

すべてのコントローラーはStimulusアプリケーションインスタンスに属し、HTML要素に関連付けられています。 コントローラークラス内ではコントローラーの以下にアクセスでき

元記事を表示

【個人開発】twitterの対抗サービスを作ってみた!

# はじめに
最近イーロン・マスクがtwitterを買収してから、いろいろ騒がれていますよね。そんなtwitterから移行しようと考えてる人を拾おうと思い、[Ammot](https://ammot.net/)というSNSを開発しました(買収前から作り始めてたのは秘密)。

https://ammot.net/

↑今回作ったSNS

Ammotは文字数制限が6000字まで、画像・動画・PDF・音声。テキストも同時に10個まで投稿可能です。
エロやグロ系も投稿可能です。

![スクリーンショット 2022-12-18 020348.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480294/681cfe1f-c3e0-4601-cfe0-03b5f8143467.png)

# 作った経緯
実はAmmotというSNSを作るのは初めてではありません。

https://qiita.com/UTOG/items/d5e6194aaa31b54e97c9

一年半前に全く同じ名前、コンセプトでサービスを公開

元記事を表示

OTHERカテゴリの最新記事