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

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

プログラミング学習に不安を感じている初学者さんへ

今回はたくさんの人に支えられながらプログラミングを半年やってきた僕が、初学者さんへ向けて、モチベーションなどを少しでも上げてもらえればいいなと思い記事を書かせていただくことにしました!
 
この記事はプログラミング学習等に不安を感じている方向けですので、不安なんて感じてないよって方は回れ右で大丈夫です。
 

果たしてどれだけの初学者さんがQiitaを読んでいるかは分かりませんが、少しでも多くの方に役に立っていただければと思います。
 

いくつか章があるので気になったところだけ読んでください。
 

## ここで簡単な自己紹介

* プログラミングをやりだして半年ほど経ちました。
* HTML, CSS, Ruby, Pythonをやっています。どれも好きです。
* 開発が大好きで、自分が欲しくなった機能などを作ったりしています。
* たくさんの方に支えられてここまで来ました。ありがとうございます。

では、そろそろ始めます。
 
めっっっちゃ緩いお話なのでリラックスしていきましょう!GOGO

## プログラミングはマジ余裕

もしこの円卓会議に参加している者の中に魔王

元記事を表示

mosaic: ベクトルタイルを再構築するための Rubyコマンド(構想)

## イントロダクション

モダンなウェブ地図における地理空間情報技術は、私たちの生活に欠かせないものとなりました。しかし、その背後には複雑なデータ構造や最適化が隠されており、地図の開発者にとっては取り扱いが難しい課題となっています。そこで、国連スマート地図グループの実践共同体である、私たちスマート地図道場は、ウェブ地図の地理空間情報技術のオープンな普及を目指し、新たな可能性を切り拓くツール「mosaic」を提案します。

### スマート地図道場の理念

スマート地図道場は、地理空間技術のオープンな発展を見据えています。共同体の成長を意識したうえで、従来の枠に囚われず、革新的なアイデアや手法を追求することを技術者に奨励します。また、地図の普及を通じて社会に貢献することを志し、地理空間情報技術を明確でわかりやすく情熱的に説明することで、他の参加者が共同体に参加し、共有されたビジョンに参画しやすくなることを目指します。

### mosaicの役割と目的

mosaicは、ベクトルタイルを再構築することに貢献することを目指したRubyコマンドラインツールです。ベクトルタイルは、地理情報を

元記事を表示

Tapioca の DSL compiler のしくみ

最近、Ruby の型チェッカーである [Sorbet](https://sorbet.org/) とその周辺ツールの [Tapioca](https://github.com/Shopify/tapioca) を色々試してみています。

Tapioca は型定義 (RBI) に関することを色々やってくれるツールで、[RBI 版 DefinitelyTyped](https://github.com/Shopify/rbi-central) から RBI を取得してくれる他、 Rails や他の DSL に対応した RBI を生成してくれたり、 gem から RBI を生成してくれるなど、 RBI に関することを本当に色々やってくれます。(他にも色々機能があります)

…ここで気になるのが、 Tapioca が DSL から RBI を生成する部分です。この生成が、何をどうやっているか無限に疑問が湧きますね :thinking_face: どう解析しているのか?何をどこまで詳細に生成できるのか??? :thinking_face: :thinking_face: :thinking_f

元記事を表示

自作Brainf*ckインタプリタを使ってAtCoderをBrainf*ckで解く

この記事は [この記事誰得? 私しか得しないニッチな技術で記事投稿! – Qiita](https://qiita.com/official-events/5d4f04cf2ba0cdbc8821) の参加記事です。

https://qiita.com/official-events/5d4f04cf2ba0cdbc8821

## はじめに

記事のネタに困っており、ネタ探しをしていたら

https://qiita.com/OribeYasuna/items/430e8755040433c36a47

の記事を見つけ、

**自作のBrainf\*ckインタプリタを使ってAtcoderの問題をBrainf\*ckで解こう!**

と思ってしまいました。
ここまできたらやるしかない(?)と思い、実際にやってみたので紹介します。

## 作戦

AtCoderでは、

– Bashで問題を解くことができる
– 環境にRubyがインストールされている様

なので、

1. RubyでBrainf*ckインタプリタをつくる
2. Bashスクリプト内でRubyでつくったBrainf*ck

元記事を表示

顧客マイページ作成

### はじめに
bootstrap導入済 
namespases使用
devaice導入済
新規顧客登録機能実装済
_______
完成イメージ
![スクリーンショット 2023-07-21 23.31.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3492906/26ea119d-dcb0-24fc-d089-ce29fff3f0c2.png)

### ルーティング
“`routes.rb
namespace :public do
resources :customers, only: [:show, :edit, :update]
end
“`
### コントローラー
public/customers_controller作成
“`
rails g controller public/customers show edit update
“`
“`public/costomers_contoroller.rb
class Public::CustomersControlle

元記事を表示

git clone でリポを複製して開発準備を整えた話

今回既存のリモートリポジトリをクローンして、

名前を変更して開発を進めるようになりました。

久々にcloneを行うので、忘れていた内容などもあり改めて初学者の自分向けにまとめてみようと思います。

# git clone でリモートリポジトリを複製

“`bash
$ git clone URL
“`

まず上記のコマンドでURLへ任意のリポジトリのリンクを貼ります。

ここで行われるのは、

リモートリポジトリの内容を一度ローカルへ保存する、というのが水面下で動いているイメージです。

早速、指定したURLのリモートリポジトリがローカルへ複製できるかチャレンジしてみます。

## リモートからローカルへの複製

今回はクローンしたいリポジトリのパスを、複製後は【rails_ec】というディレクトリ名で保存したいので、任意のディレクトリに移動してコマンドを実行します。

“`bash
$ git clone [URL] [ディレクトリ名]
“`

コマンドを実行し、ターミナルでlsコマンドで確認したところ

“`bash
$ ls
=> DB2 README.md

元記事を表示

RailsでECサイト作成の練習をするなり。その1

自分は、実務経験1年なので誤った箇所やアドバイスを優しく教えていただけるとありがたいです。また、業務では行政系やっていたので細かいところは勘弁してください。
(※Rails7系は、初触りなので他の情報があったらそっち参考にしてください!)

# 大まかな設計
## 画面
– トップページ
– 新規登録ページ
– ログインページ
– マスタページ(出品者画面)
– 商品一覧ページ
– 商品詳細ページ
## 機能
– 新規登録
– ログイン
– メール認証
– 商品登録
– 購入手続き

## データベース
– ユーザーの情報
– 商品情報
(細かいところは下で…)

ここらで終了。他は、新規機能追加みたいな感じで進めていきます!

# 環境
– Ruby 3.0.0
– Rails 7.0.6
– PostgreSQL 14.8
(自分はM1のMacBook使ってます。コマンドがうまく動かない時は、自分の環境に合わせたコマンドを叩いてください!)
Windowsの民は、WSLをおすすめします!Windows上でLinux使えます!(自分はUbuntu使っていました。)

# Rai

元記事を表示

管理者側 顧客情報編集ページ

:cherry_blossom:はじめに
bootstrap導入済 
namespases使用
devaice導入済
顧客一覧ページ作成済
顧客情報詳細ページ作成済
Admin::CustomersController作成済
_________
:tangerine: 完成イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3492906/a6b107f0-8c01-a60e-8eea-5c986c7f2742.png)

### :shamrock: ルーティング
**edit** と **updata** を追加する
“`routes.rb
resources:customers, only: [:index, :show, :edit, :update]
“`
### :shamrock: コントローラー
“`admin/costomers_controller.rb
class Admin::CustomersController < ApplicationContro

元記事を表示

Railsアプリケーションで利用しているMySQLのテーブル情報から、BigQueryのためのスキーマを作ってみる

Mysqlにあるデータの一部を分析のために、BigQueryなどのデータウェアハウスに移す、というのはよくあるケースだと思います。
その際、BigQueryだとテーブルを作る際に下記のようなテーブルのスキーマ定義が必要になります。

“`json
[
{
“name”: “id”,
“type”: “integer”,
“mode”: “required”
},
{
“name”: “title”,
“type”: “string”,
“mode”: “required”
}
]
“`

スキーマ定義は各カラムの名前(name)、データ型(type)、nullを許可するかなどのモード(mode)の3情報の集合で、MySQLからデータを移す場合は、対応する3つを入れてあげればよさそうです。
今回はRailsアプリケーションの場合簡単なスクリプトを書いて、あるテーブルの全カラムのスキーマを自動生成してみます。

## テーブル情報の取り出し方
まず、テーブルのカラムの情報が欲しい場合、下記の1行でまとめて取り出すことができ

元記事を表示

【html.erb】Emmetを使いコードを楽に書く方法

html.erbファイルの実装を入力補完のプラグインを使って楽に書きましょう!

Ruby on RailsでのWebアプリケーション開発を行う際のビューに関する設定を備忘録としてメモしておきます。

# htmlのコード実装で入力補完してくれるEmmet
htmlファイルのコードを記述する際、これまで入力補完による楽な記述ができていました。

ですが、Ruby on RailsでのWebアプリケーション開発を行う際、html.erbという拡張子のファイルを作成する際には、入力補完が機能しないことに気づきました。

そんな時はEmmetというプラグインの設定をいじることで解決できます。

# Emmetとは?
Emmetとは、HTMLやCSSを省略記法で入力できるプラグインのことを言います。

# 省略コードの書き方

箇条書きリストのタグを入力したい場合、このような感じで省略コードを書きます。

### 箇条書きリスト

“`ruby:html.erb
ul>li*10
“`
このように入力してEnterを押すと、以下のように補完して自動的に入力してくれます。

“`c:h

元記事を表示

【Rails Rspec 備忘録】Failure/Error: 〇〇 expected: 1 got: 2

### はじめに
※rails初心者向けです。

Rspecでテストコードを書いていた時に、 Failure/Error: 〇〇 expected: 1 got: 2 に直面しました。
備忘録として解決法を残しておこうと思います。

### やりたかったこと
レコードが存在しない場合に新しくid=1のレコードを作成して保存するようなテストを書こうと思いました。

### 間違ったコード
createを2回しているため、エラーが起きた。
expect(テーブル名).exists?(1).to be(false)でレコードの中身をnilにして新しくcreateできると思ったが 、id = 2のレコードが作られてしまった。

“`ruby:hoge_spec.rb
describe `PUT /hoge/fuga` do
before do
@hoge = create(:hoge, 1)
end

context 〇〇 do
      it ‘レコードが存在しない場合新しくid=1のレコードを作成する’ do
expect(テーブル名)

元記事を表示

管理者側 顧客情報詳細ページ

**はじめに**
bootstrap導入済 
namespases使用
devaice導入済
顧客一覧ページ作成済
Admin::CustomersController作成済
__________
完成イメージ
### ルーティング
costomersに**show**、
編集ページのための**edit**
注文履歴一覧を表示するために**resources :orders, only: [:index]** を追加
“`diff_ruby
namespace :admin do
resources :customers, only: [:show, :edit, :update] do
+ resources :, only: [:index] # ここを追加
end
“`
### モデル

顧客が多数の注文を持っているようにします
顧客の注文履歴一覧を見るためです
“`costomer.rb
class Customer < ApplicationRecord has_many :orders end ``` ```order.rb class Orde

元記事を表示

rbenv install が上手くいかない時の対処法

# エラー解決までに行ったこと

**投稿者の環境**
– **Windows 11**
– **WSL 2**
– **ubuntu 22.04**
– **rbenv 1.2.0**

## **zlib 1.2.13をインストール**

“`zsh
$ cd /usr/local/src
$ sudo wget https://github.com/madler/zlib/releases/download/v1.2.13/zlib-1.2.13.tar.gz
$ sudo tar xvzf zlib-1.2.13.tar.gz
$ cd zlib-1.2.13
$ sudo ./configure
$ sudo make -j 8
$ sudo make install
“`
– **公式サイト : https://www.zlib.net/**
– **参考 : https://qiita.com/shadowhat/items/867d9e06bc42cf862b9a**

## **OpenSSL 1.1.1をインストール**

“`zsh
# OpenSSL 1.

元記事を表示

掲示板の検索機能

最近掲示板の検索機能の実装方法を学んだのでこちらにアウトプットしておきます。
# 検索機能の実装
検索バーを`ransack`というgemを使って実装していきます。
Ransackはデータベースから特定の条件に一致するレコードを探すための検索クエリを生成する機能を提供します。

#### 手順
①`ransack`のインストール
②コントローラーの編集
③viewの編集
④国際化(任意)

# ①`ransack`のインストール
Gemfileに以下のコードを記入
“`ruby:Gemfile
gem ‘ransack’
“`
“`
$ bundle install
“`

# ②コントローラーの編集
“`ruby:boards_controller.rb
#編集前
def index
@boards = Board.all.includes(:user).order(created_at: :desc).page(params[:page])
end
↓↓
def index
@q = Board.ransack(params[:q])
@boards =

元記事を表示

管理者側 顧客一覧ページ

### :shamrock: migrageファイル追加
まず、モデルに退会ステータスのためのフィールドを追加します。今回は、**boolean型** の**is_deleted**というカラムを追加することにします。
“`diff_ruby
t.boolean “is_deleted”, default: false
“`
:star:**boolean型 のis_deletedがなければ**
ターミナルで以下のコマンドを実行します
“`
rails generate migration add_is_deleted_to_customers is_deleted:boolean
rails db:migrate
“`
### :shamrock:コントローラー
“` abmin/customers.html.rb
class Admin::CustomersController < ApplicationController def index @customers = Customer.all end end ``` ### :shamrock:vi

元記事を表示

Webpacker::Manifest::MissingEntryError を解決したい

## Webpacker::Manifest::MissingEntryError
ただrails sコマンドを実行したところ、今までに見たことの無いエラーが突然吐かれて混乱。
“`ruby:エラー
ActionView::Template::Error (Webpacker can’t find application.js in /home/ec2-user/environment/Javajiten/public/packs/manifest.json. Possible causes:
1. You want to set webpacker.yml value of compile to true for your environment
unless you are using the `webpack -w` or the webpack-dev-server.
2. webpack has not yet re-run to reflect updates.
3. You have misconfigured Webpacker’s config/webpack

元記事を表示

退会確認画面 退会ステータス

**はじめに**
bootstrap導入済 
namespases使用
devaice導入
:blossom:boolean型で実装
________
今回の完成イメージ
![スクリーンショット 2023-07-20 23.47.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3492906/3e8e4249-9f2c-b6fb-ea23-3b15bba2e2f7.png)
### :cherry_blossom: boolean型について
真偽値を表現するためのデータ型です。これは、主に論理的な真(true)または偽(false)のいずれかの値を持つことができます。

データベースでの使用例としては、ユーザーが商品の購入を希望しているかどうか、商品が在庫切れかどうかなど、二つの状態のうちどちらかを示す必要がある場合に使用されます。

Railsでは、これをデータベースのカラムに適用して、そのカラムがtrueまたはfalseの値を持つことができます。例えば、今回のis_deletedフィールドは、顧

元記事を表示

既存のRailsアプリをRansack 4に対応させる手順

## はじめに
Ransack 4.0.0では「検索可能な列」や「検索可能な関連モデル」をモデル内に予め定義しておかないと、以下のようなエラーが発生します。

“`
RuntimeError in Users#index

Ransack needs User attributes explicitly allowlisted as
searchable. Define a `ransackable_attributes` class method in your `User`
model, watching out for items you DON’T want searchable (for
example, `encrypted_password`, `password_reset_token`, `owner` or
other sensitive information). You can use the following as a base:
“`

![ng.png](https://qiita-image-store.s3.ap-northeast-1.amaz

元記事を表示

Sorbetのruntimeチェックを試してみた

SorbetはRubyのシンタックスで書かれているため、型アノテーションの情報を実行時にも保持できます。
(Steepはコメントアウトで型アノテーションを記述するため、実行時には型の情報が捨てられてしまっているようです)

これを用いて、実行時に型アノテーションの検査ができるというので、手元で試してみました。

https://sorbet.org/docs/runtime

## Sorbet Runtimeについて

Sorbetは部分的に型チェックを有効化、無効化することが可能です。そのため、型アノテーションを記述しても異なる型の値が渡される可能性があります。

Sorbet Runtimeは実行時に型情報を用いて、アノテーションをチェックすることができます。

これにより、型アノテーションの誤りに気づくことができます。

## 試してみる

まずは型チェックを無効化してプログラムを実行してみます。

“`rb:untyped.rb
# typed: false

class Untyped
attr_reader :age

def initialize(age:)

元記事を表示

顧客側 新規登録 

### はじめに
bootstrap導入済 
namespases使用
devaice導入
___________
今回の完成イメージです
![スクリーンショット 2023-07-20 19.57.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3492906/230e22b6-61d8-9de0-77b4-00cc2a19a8aa.png)

“migrateファイル“
以下のようになってればOK!
足りないものがあれば追加してください。
“`diff_ruby
create_table “customers”, force: :cascade do |t|
t.string “email”, default: “”, null: false
t.string “encrypted_password”, default: “”, null: false
t.string “reset_password_token”
t.datetime “reset_pas

元記事を表示

OTHERカテゴリの最新記事