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

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

開発ツールに頼らず 様々な言語から WebAssembly(第2回)

WebAssembly は多くのプログラム言語からライブラリの様に呼び出す事が出来る。
WebAssembly のコードを書く方法は多くの記事で書かれているが、その使い方はフレームワーク等のツールに頼っている事が多い様だ。
本記事では、そのような便利ツールに出来るだけ頼らず JavaScript, Rust, Python, Ruby から WebAssembly を実行する方法を記載する。

WebAssembly は新しい技術である。
目先の最先端ツールに飛びつくのもよいが、その基礎を学んで長く使える知識を身に着けないか?

本記事はシリーズの第2回である。シリーズ記事の一覧は [第1回] の **#シリーズ記事一覧** に載せている。シリーズの記事を追加する時は [第1回] の一覧を更新して通知を行うので興味の有る人は [第1回] をストックして欲しい。

# 本記事の概要と過去記事の復習

[第1回] では、最小限の WebAsseembly のコードとして「足し算を行う」関数を作成し、そのコードを実行する外部プログラムを JavaScript, Rust, Python,

元記事を表示

【Ruby&JavaScript入門】プログラム初心者が複数のプログラミン言語を比較しながら復習するための練習帳《その3》

プログラミング超初心者がRubyとJavaScript入門編を学び、次へ進もうとすると理解したことを忘れるため備忘録目的で記事を書きました。その第3弾です。

具体的な取り組み方法[^1]。

取り組むときの注意[^2]。

[^1]: 回答用のファイル(mdファイル)を別途用意して練習帳(この記事)のコードをコピーする。回答用の中にある自力で入力しなくてはいけないコードを全て削除。回答用のファイルをVSコードで開き、コードを書く。やり方は[Qiitaの【Markdown記法 チートシート】を活用してMarkdownをマスターする!《答え編》](https://qiita.com/asuka-80/items/296885245cc27ad46f87)と同じ要領です。

[^2]:mdファイルに書いているのでMarkdownと異なり、コードを間違えても気づきにくいです。

## ①Rubyでは`こんにちは` `飛鳥です`と2つの文の出力を行うintroメソッドを定義し、introメソッドを呼び出す。JavaScriptでは関数を定義した際に使用した定数名introを用い

元記事を表示

RubyでAtCoder ABC308(A, B, C)を解いてみた

# はじめに
Webエンジニアを目指して、RubyやRailsをいじってます。
今回は、RubyでAtCoder ABC308のA, B, Cを解きました。備忘録として解き方をまとめていきたいと思います。

# A – New Scheme
https://atcoder.jp/contests/abc308/tasks/abc308_a
“`ruby:a-308.rb
s = gets.split.map(&:to_i)
puts s == s.sort && s.all?{ 100 <= _1 && _1 <= 675 && _1 % 25 == 0} ? "Yes" : "No" ``` # B - Default Price https://atcoder.jp/contests/abc308/tasks/abc308_b ```ruby:b-308.rb n, m = gets.split.map(&:to_i) c = gets.split d = gets.split a = gets.split.map(&:to_i) b = a.shift hash = d.z

元記事を表示

Rspecでの配列でのエラーが出た

### Rspec今日学んだこと

今日はゆっくりコードを書いていたんだが、

投稿を表示させるspecを書いていた。

`・boardには対応するtag_listがある(tagは配列で保管される)`
`・ページごとに取得するtag_listを決めている(boards_path(tag_name: ‘park’))`
`・投稿一覧ページにとんだ際指定したtag_listの投稿が取得できているかの確認`

が成功すればOK。

“`
RSpec.describe “投稿の表示”, type: :system do
before do
@user = FactoryBot.create(:user)
end
#パークエリア情報の投稿を取得
it ‘パークエリアの投稿を取得できること’ do
@board = FactoryBot.create(:board,tag_list:’park’)

visit boards_path(tag_name: ‘park’)
expect(page).to have_current_path(boards_path

元記事を表示

(rails)ActiveRecordのメソッドについて

・まずはRails Consoleとターミナルに入力して、ターミナル上でRailsアプリケーションに命令を出せるようにします。(Rails Consoleはrails cと省略可能)

・createメソッドを使用することで、テーブルにレコードを作成・保存できます。
基本構文と例文は以下の通り
`モデル変数 = モデル名.create(属性1: 値1, 属性2: 値2)`
`user = User.create(name: ‘John Doe’, email: ‘john@example.com’)`

・allメゾットについて
allメソッドは、テーブルからすべてのレコードを取得するためのメソッドです。
基本構文と例文は以下の通り
`Model名.all`
`Blog.all`

・countメゾットについて
countメソッドとはテーブルのレコードの件数を取得するためのメソッドです。
基本構文と例文は以下の通り
`Model名.count`
`Blog.count`

・whereメソッドについて
whereメソッドとはテーブルのカラムに特定の値が入っているレコードのみを取得するこ

元記事を表示

【Rubocop】reversibleなmigrationではない。

rubocop のご指摘
“`
C: Rails/ReversibleMigration: change_column_comment(without :from and :to) is not reversible.
“`

#### 何をしたらご指摘を受けたのか

DBのカラムにコメントを追加したいと思い、以下のコマンドを用いてマイグレーションファイルにコメントを追加しました。

“`
$ bundel exec rails g migration AddCommentsToTable
“`

内容
“`rb:200xxxxxxxxxx…_add_comments_to_table.rb
class Add CommentsToTable < ..... def change change_column_comment(:hoge, :fuga, 'hogehogefugafugaしたい') end end ``` ``` $ bundle exec rails db:migrate ``` ``` 確認 $ bundle exec

元記事を表示

?動物言語?(pad_character)を『gem』で作ってみた!?

この記事は、ふぁ○お神様に憧れて、~~中間試験・PF作成を放り投げて~~gem作成に勤しんだ日記です!

gemの内容は、とっても簡単ですのでGitHubに飛んで内容も見て行って下さい。一つのgemの内容がわかるようになると、他のものにも応用ができ、gemを使う際の手助けとなってくれると信じています!

注意:間違い等あるかもしれません!!!気付かれましたら、お手数ですが教えて下さい?

目次だにゃ?

– これを作りました!
– ほぼ、これを参考に作りました?
– 私の環境
– 事前準備
– gem作成の大まかな流れ
– 1、[RubyGems](https://rubygems.org/)で、作りたいgemと同じ名前がないか調べましよう!
– 2、Gemの箱(雛形)を作ります。
– 3、自分の思うままに中身を作っていきましょう!
– 4、動作確認をしていきましょう!
– 5、RSpecを書いて、ちゃんと確認してあげましょう!
– 6、世に出してあげましょう!
- 上記以外の参考文献
- 公式しか勝たん!
- 最後に

# これを作

元記事を表示

Rails map,flatten,pluckなどなど…

# はじめに
– 調べたり試行錯誤したりして実装したメソッドについて、自身の定着のためにまとめました
– 学習内容の備忘録です

# 目次
1. コミュニティIDの取得について(コードの【A】参照)
1. UserモデルとCommunityモデルのJoin操作について(コードの【B】参照)
1. コミュニティに所属するユーザーの投稿を取得することについて(コードの【C】参照)

以下の記述について、自分なりに苦労したため、まとめてみます。
“`ruby:post.html.erb
#省略

def index
@post = Post.new
if current_user.communities.present?

#【A】
community_ids = current_user.communities
.map(&:subtree_ids)
.flatten

#【B】
commu

元記事を表示

windowsでbundle install mysql2について

エンジニア学習4か月目に入りましてようやく自作ポートフォリオの設計をし始めたのですが、
その前にrailsのRDBとしてデフォルトのSQliteではなく、MySQLを使うのにとても苦労したのでもし初学者や未経験の方で同じような壁にぶつかっているwindowsユーザーの助けになればと思います!

※ぶっちゃけ最初のプログラミング言語としてrails触るならMacの方が簡単です(笑)
バージョン管理が優秀ですし…。

## MySQLのインストール
まずは[このページ](https://dev.mysql.com/downloads/)よりMySQL Community Serverをインストールします。
※インストールする具体的な設定は[こちらのサイト「](https://www.javadrive.jp/mysql/install/index2.html)を参考にしました。

次にWindows PowerShellで下記コマンドを打ってパスワードを設定します。
すでに設定済みの場合は、パスワードを入力してください。
“`
mysql -u root -p
“`
そうするとウェル

元記事を表示

(rails)modelの作成と命名規約について

(確認)modelとは
modelとは簡単言うと、データベースのテーブルとアプリケーションのビジネスロジックの間でデータのやり取りを行うためのクラスです。

modelを作成するためのコマンドは以下の通りです
“`
rails g model モデル名 [属性名:データ型 …]
“`
例文は以下の通りです
“`rb
rails g model Post title:string content:text
“`

このコマンドを実行することによってモデルファイルと共に、マイグレーションファイルも作成されるので `rails g migration` でマイグレーションファイルを作成する必要がない

また、modelに名前をつける際に以下のような規約があります。
1.モデル名は単数形で記述します。
例: User, Post, Product

2.モデル名はキャメルケース(単語の先頭を大文字にする)で記述します。
例: ArticleCategory, OrderItem, UserProfile

3.モデルに対応するデータベーステーブル名は、モデル名の複数形で表現します

元記事を表示

Cookieとセッションの違い

Webに関する基礎知識をつけるべく、これまでなんとなくで把握していたCookieとセッションについて、改めて学習しました。その記録をこちらに残しておきます。

どなたかのお役に立てれば幸いです。

# Cookieとは?
“`
Cookieとは、WEBサイトを閲覧したときに、
訪問者が訪れたサイトや入力したデータ、
利用環境などの情報が記録されたファイル(仕組み)を指します。
“`
引用:https://gmotech.jp/semlabo/webmarketing/blog/cookie/

# セッションとは?
“`
セッションはユーザーがWEBサイトにアクセスしてから、
最終的に離脱するまでの行動を示す指標です。
ユーザーがWEBサイトへ訪問した回数とも捉えられ、
自サイトにおけるユーザーの訪問回数を確認する場面でも役立つはずです。
“`
引用:https://www.switchitmaker2.com/web-analytics/web-session/

# Cookieとセッションの違い

– どちらも情報・データを保存する機能である。
– 保存場所や、保存期間

元記事を表示

ruby.wasmでひらがなの書き方を練習する紙を印刷するアプリケーションをつくりました

https://ledsun.github.io/kakikata/

## どんなアプリケーション?

ひらがなの書き方を練習する紙を印刷するためのアプリケーションです。

## なんでつくったの?

社内でアプリデプロイチャレンジというイベントがありました。
このイベントをきっかけに作りました。

## 特徴

### 印刷したらA4にぴったり

印刷して使うことを想定しています。
ブラウザの表示内容は印刷するとくずれがちです。
A4用紙にあわせて印刷出来ます。

### フォントが教科書体

日本語になれていると気がつきませんが、
書き方の初学者にはOSのデフォルトフォントの書体は難しいです。
読みやすくはあるのですが、クセがあるため学習上は問題になります。

たとえばメイリオの「ふ」はこのような字体です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15964/fc563048-3f2d-3492-1dc6-4cff4f6ab12a.png)

字の練習用としてみると次のように

元記事を表示

Ruby 標準ライブラリのクラスとメソッドまとめ

***:cherries:学んだことを随時まとめてく:cherries:***
間違っている点があれば是非教えていただきたいです
***

– Date クラス(日付処理)
“`ruby
#現在の日付(年/月/日)を取得
today = Date.today #.year/.month/.day
puts today #=> yyyy-mm-dd #=>yyyy/=>mm/=>dd

#文字列を日付に変換
date_str = “xxxx-xx-xx”#文字列
date = Date.parse(date_str)
puts date #=> xxxx-xx-xx(日付オブジェクト)

#日付オブジェクトを指定したフォーマットの文字列に変換
date = Date.today
formatted_date = date.strftime(“%Y-%m-%d”) #(“%Y年%m月%d日”)
puts formatted_date #=> “xxxx-xx-xx”             

サービス無停止でRedisを移行した話

# はじめに

自分の組織ではRedisのアップグレードに伴って、VPCを移行するニーズがありました。
アップグレードするためだけなら、色々方法はあります。
AWSが公式で推奨する方法は別にありますし、Redisの公式も別です。
この記事では、Redisをサービス無停止でのRedis移行に関してをまとめたいと思います。

# この記事の想定読者

別のネットワークのRedisにリアルタイムで同期してサービス無停止で切り替えを行いたい人

つまり、

– AWSからオンプレミスへ
– AWSからGCPなど別のクラウドサービスへ
– NonManagedなRedisからElastiCacheのようなマネージドサービスへ

サービス無停止で切り替えができることと同義かとおもいます。

AWSが提供しているデータ同期サービスDMSは
AWS -> xxx のデータ同期ができないです。
なので、サービスで行いたい場合は参考になるかと思います。

# きっかけ

自分が開発に関わっている組織ではRedis3系が使われていました。
AWSのElastiCacheのRedisのEOLが7月末に行われる

いいねの合計カウントが多い順に投稿を表示する

今回は、本の投稿一覧ページで、過去一週間でいいねの合計カウントが多い順に投稿を表示して行きます!
#### 初めに 
本投稿アプリ作成中!
:shamrock: **前提条件**
・device導入 ・Bootstrap導入
・ユーザー機能実装済(Userモデル)
・投稿機能実装済(Bookモデル)
・いいね機能実装済 (favoriteモデル)
___
#### :shamrock: アソシエーション追加
:star:**has_many :favorited_users, through: :favorites, source: :user** を追記します。

この関連付けは、多対多の関係を持つモデル間の関連付けを簡潔に表現するためのコードであり、中間テーブルを介して関連するモデルにアクセスすることができるようにします。

:snowflake:**through: :favorites, source: :user**
(投稿モデルが直接ユーザーモデルにアクセスすることができるようにする。)
:snowflake:**through: :favorites**
(中間テーブルを

bin/rails s でサーバ起動しないどころかエラーの玉手箱だった

“`bash
$ bin/rails s
=>You must use Bundler 2 or greater with this lockfile.
“`

サーバーを起動しようとしたところ、エラーが表示されました。

翻訳すると

> **このロックファイルでは Bundler 2 以降を使用する必要があります。**
>

という内容。

最初にbundlerは最新をインストールしていたと思いましたが抜けていたようです。

# bundlerのバージョンが低い

bundler のバージョンを確認してみます。

“`bash
$ gem list bundler
*** LOCAL GEMS ***

bundler (default: 1.17.2)
“`

バージョンがエラー文に書いてある通り低いのでインストール可能なバージョンの確認を行います。

“`bash
$ gem install ^bundler
=>インストール可能なバージョン一覧が表示される
“`

今回は最新のものを適用してみます。

“`bash
$ gem install bundler

Railsチュートリアル3章まとめ

# 目的
静的なページの作成および自動化テストの作成

# 3-2 静的ページの生成
この章ではコマンドでのコントローラー作成方法について学びました。

・コントローラーの作成
コントローラーとアクションをまとめて指定することができ、コマンドラインでHomeページとHelpページ用のアクションもまとめて生成している

“`
$ rails generate controller StaticPages home help
“`
・変更の破棄
rails generateで作成したものを元に戻せる
“`
$ rails destroy controller StaticPages home help
“`

・作成したメソッドはルーターへ追加する
“`
Rails.application.routes.draw do
get “static_pages/home”
get “static_pages/help”
root “application#hello”
end
“`

# 3-3 テストから始める
この章ではテストの作成方法とテストの必要性について学

【2023年版】”Rails is not currently installed on this system.”というメッセージが出たときの対処方法

## はじめに:sudo gem install railsは実行するな!
初心者さんが新しいMacにRailsの開発環境をセットアップすると、`rails -s`や`rails -v`を実行したときに以下のようなメッセージが表示されることがあります。

“`
$ rails -v
Rails is not currently installed on this system. To get the latest version, simply type:

$ sudo gem install rails

You can then rerun your “rails” command.
“`

日本語訳はこんな感じです。

“`
Railsは現在このシステムにはインストールされていません。最新バージョンを入手するには、次のように入力してください:

$ sudo gem install rails

そうすれば “rails” コマンドを再実行できます。
“`

「エラーが出たらちゃんとエラーメッセージを読むんだ!」という先輩プログラマの助言に従うと、ここは

Ruby 3 を古い gcc でコンパイルしたい

rbenv をつかって ruby を管理しており、v3(v3.1.3~、v3.2.0~)をインストールしたところ以下のようなエラーが出て困っている人向けの記事です。

“`
compiling miniinit.c
In file included from vm_core.h:164:0,
from iseq.h:14,
from mini_builtin.c:3,
from miniinit.c:51:
thread_pthread.h:109:39: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘struct’
RUBY_EXTERN RB_THREAD_LOCAL_SPECIFIER struct rb_execution_context_struct *ruby_current_ec;
^
In file incl

Webpacker::Manifest::MissingEntryErrorエラーの解決策

開発環境

Ruby 6.1.5
Rails 3.2.2

エラー文

![WebpackerError黒塗り.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3497034/5837eab2-2708-1735-23d3-03eebca79072.png)

“`ruby:エラー文
ActionView::Template::Error (Webpacker can’t find application.js in C:/Users/○○/Desktop/○○/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