Ruby関連のことを調べてみた2020年04月01日

Ruby関連のことを調べてみた2020年04月01日
目次

Rails初心者のRailsチュートリアル各章後のまとめ 1章

初投稿のため至らない点、間違っている点などあるかと思いますのでご指摘いただけると幸いです。
Rails初心者のRailsチュートリアル終了後の備忘録として投稿させていただきます。
※自分なりに色々と情報収集をして完全自己流で進めて行きます。
#Railsチュートリアル1章まとめ
##開発環境
開発環境としてRailsチュートリアル推奨環境であるAWS Cloud9を利用しました。チュートリアルに詳細なセットアップの方法が記載してあるため、特に詰まることなくセットアップ完了。(いつかはローカル環境で開発したい。)

##Railsをインストールする
Railsのインストールの前にprintf~というコマンドを入力。意味はわからなくも問題ないとのことだが一度ググってみるもほとんど情報が出てこないため置いておくことに。
早速railsをインストール。gem install rails -v(バージョンを指定)のコマンドでインストールできる。

##最初のアプリケーション
コンピュータープログラミングの古来からの伝統らしい「Hello World」を表示する。
その前にUNIXコマンドのまとめ

元記事を表示

【Ruby】Struct(構造体クラス)を理解する

# Struct(構造体クラス)とは?

Rubyにおける`Struct(構造体クラス)`は簡易的なクラスのようなもので、下記のようなケースで使用されます。

– まとまったデータを扱いたいが、クラスを作るまでもない場合。
– クラス内で特定のデータのまとまりを表現する場合。

# 通常のクラスとの違い

主に下記のような違いがあります。

– 継承、ミックスイン、メンバの追加・削除ができない。
– 明示的にアクセスメソッドを定義しなくても、構造体クラス外でメンバの参照・更新が可能。

# Struct(構造体クラス)の定義方法

## 定義方法(1)

第一引数には`String`で`構造体クラス名`を渡します。(クラスと同じで大文字から始まる必要があります。)
第二引数以降には`Symbol`でメンバを渡します。

__第一引数を渡した場合__

“`ruby
Struct.new(“User”, :name, :age)

p Struct::User.new(“Taro”, 36) #=> #

元記事を表示

Library not loaded: libssl.1.1.dylib (LoadError) 発生時の解決方法

#状況

macOS catalina で railsアプリの開発環境を整え終わって、
Windows10環境で開発してたWebアプリをクローンし、いざ`rails server`実行だ!
と意気込んでいたら、見た事のないエラーに困惑…

解決はできたものの、いろいろと調べたら闇が深そうだったので、
自分用にメモを残しておきます。

ついでに同じエラーに悩む方の助けになれば幸いです!

###エラー内容
“`zsh:zsh
dlopen(/Users/kirimaro/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/mysql2-0.5.3/lib/mysql2/mysql2.bundle, 9): Library not loaded: libssl.1.1.dylib (LoadError)
Referenced from: /Users/kirimaro/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/mysql2-0.5.3/lib/mysql2/mysql2.bundle
R

元記事を表示

deviseに新しいカラムを追加したけどviewsに表示されない

deviseで作ったusersテーブルに新しくnameカラムを追加、新規登録画面にnameを入れるフィールドを作ったが、なぜかviewsで表示されない問題が解決したので備忘録も兼ねて記事に致します。この記事で少しでも参考になれば幸いです。

結論から申し上げますと、i18nを使うためにはi18n化されたviewsファイルでなきゃ駄目なようです

①自分はdeviseのviewsファイルを作成する際に以下コマンドで作成しました。
“rails g devise:views users“

②そして日本語化もしたかったのでlocaleファイルも作成
“`rails g devise:i18n:locale ja“`

①のコマンドではviewsファイルがi18n化されておらず②と噛み合っていなかったことで、nameフィールドがviewsに表示されなかったと思われます。なので①のファイルを作り直しました。

“rails g devise:i18n:views users“

以後、無事にviewsに表示されてめでたしめでたし。

元記事を表示

Reactのチュートリアルの三目並べで少しRails使う #1

何度もくどいですが、[前回](https://qiita.com/GodPhwng/items/ac8bc9c6275320bb62d4)までのReactチュートリアルの三目並べをせっかくなので勉強も兼ねてRuby Railsで作ってみようと思います。

RubyおよびRailsはProgateの無料レッスンをこなした程度です。

**無理やりerbでやらせて、ボタンを押下するたびにformをsubmitしたら、超もっさりになりました・・・。**

– そもそも小規模なので、クライアントで完結させた方がよい
– 使うにしてもクライアントはReactなり他のフレームワークやライブラリに任せればよい
– やり取りはajaxにして、Rails側はデータの出し入れだけやればよい

にすればよかたかも・・・。

#開発環境
**Rails環境:[以前の記事](https://qiita.com/GodPhwng/items/7ab78de4342649b5725e)で構築した環境を使用する**
**エディタ:VSCode**

#M(Model)V(View)C(Controller)を用

元記事を表示

docker上でRailsアプリを動かす際に、localhostでアクセスするためのオプション

# はじめに

学習環境を用意するにおいて、コンテナ上に開発環境が用意できることで、

・ホストPCを汚すことなく環境を構築できる
・異なるPC間で同じ環境を使いまわせる
・格好いいと感じる

といった理由からRailsアプリをコンテナ上で作って動かしてみましたが、ホストからの動作確認で引っかかったのでメモします。
※動かしたのはscaffoldレベルのアプリです

# 先にまとめ

先に問題と解決をまとめて書いておきます

– 問題
– コンテナ内で起動したRailsアプリにホストからアクセスできない
– 解決方法
– Railsアプリを立ち上げる際に、`-b 0.0.0.0`をオプションとしてつける

## 以下、やったこと

まとめにたどり着くまでの状況をつらつらと

### 準備

ポートフォワードの設定をしてコンテナを立ち上げる

“`
(ホスト)$ docker container run -it -p 30000:3000 /bin/bash
“`

コンテナ内でアプリを作る

“`
(コンテナ)# rails new scaffold_sample
(コ

元記事を表示

dockerでGemfile(gem追加)更新したら後、データベースが消えた、gemが反映しない

サーバーを再起動してますか????

#dockerではない通常開発の場合

“`:dockerなし
control c でサーバー終了
rails s
“`
これでgem反映します。

ということはdockerもサーバーを再起動しなければいけない。

“`:dockerあり
$ docker-compose restart
“`
これで反映されます。

元記事を表示

RubyのFloat(arg, exception: true)をbuiltinで再実装してみた

# はじめに

この記事は以前書いた以下の記事で紹介したbuiltinを使って`Float(arg, exception: true)`というメソッドを再定義してみた記事になります。

[Ruby(とC)でRubyを実装してみた(builtinで遊んでみた)](https://qiita.com/S_H_/items/452c94d6e832789f17ad)

やっていることは前回の記事とおおよそ同じです。前回と異なる点は、特定のクラスのメソッドではなく、どこでも呼び出すことができるメソッドをbuiltinで再定義してみたという点です。

前回の記事を書いた後、`raise`や`Float`などのメソッドをbuiltin対応ができるのか気になり試してみた感じですね。

結論から言うと、そういったグローバルなメソッドもbuiltinで対応することができるようです(意図した挙動かは確認とっていないので、推奨されたものではないかもしれませんが……)

# builtinって?

builtinとはRuby(とC)でRuby自体を実装するというものです。詳しくは前回の記事を読んでいただければ

元記事を表示

仮想環境でRails API × Nuxt.jsのアプリケーション開発をしたいが、まずブラウザに表示されない!

## 自己紹介
– 現在プログラミングの学習中の者です
– 言い回しや知識に関して、諸所間違い等あるかと思います
– その際は、ご指摘いただけますと幸いです

## やりたいこと
RailsをAPIとして使用し、Nuxt.jsをフロント側に使用する開発において、
それらを**仮想環境で**開発を開始すること。

具体的には、@saongtx7様が書いてくださった
こちらの記事を仮想環境で進めたいと思ったことがきっかけです。

**[入門]Rails API × Nuxt SPA × Firebase Authで作る Todo Appチュートリアル**
https://qiita.com/saongtx7/items/d97ef5aec393e704fd3f

本当に素晴らしいチュートリアルでした。
この場を借りて感謝申し上げます。

## 問題点
私の場合このような問題が起こりました。
#
– Rails側でポート指定をしてもブラウザに表在されない(rails s -b 5000)
– Rails側でポートを指定せずに起動した場合、Nuxt.jsとポート番号が競合する

## 結論

元記事を表示

railsのルーティングからOpenAPI(V3)ドキュメントを自動生成・管理するツールを作成し、10ヶ月間会社で運用した話(下期編)

前回、[railsのルーティングからOpenAPI(V3)ドキュメントを自動生成・管理するツールを作成し、4ヶ月間会社で運用した話(開発秘話もあるよ)
](https://qiita.com/yukihirop/items/670e843a1cdf50621ca8)という記事で下期の進捗も報告すると書いたのでその記事になります。

## 使用したツール

自分で作った[r2-oas](https://rubygems.org/gems/r2-oas)です。

## 4ヶ月の実績

※会社の許可をとりデータを載せております。

## 全体の実績

赤線が目標ライン。目標は、5個/週 です。

![スクリーンショット 2020-03-30 11.04.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113181/548231cd-3c35-270c-f988-d55023af9376.png)

## 各週の実績

10月の中旬に進捗がないのは、他のプロジェクトを引き継ぐために必死だったからです。
着手

元記事を表示

Rails ウィザード形式導入について 1

#はじめに
Qiitaサボっておりましたが、学習は継続してしっかりやっております!
むしろチーム開発を通じて、アプリ開発が楽しくてたまらない状態です!
しかし、サボりっぱなしは気持ちよくないので、リスタートさせてください(泣)

上述の通り、チーム開発でフリマサイトを開発致しました。
その際、ユーザーの新規登録画面でウィザード形式を導入致しましたので、内容を整理します。
もうすでにご存知の方、省略の仕方等ご存知でしたら、ご教授願います。

#ウィザード形式とは
– 世に出ているアプリ等でも見かける画面が切り替わりながらユーザー等の登録を行うもの
– ウィザード形式とは、対話するように順番に操作が進んでいくインターフェースのこと

#なぜウィザード形式が必要なのか
– 使いやすくなる
– UXのクオリティが高まる

私自身も「使いやすい」、「何がどこにあるのか」が分かり易いアプリは、いい印象です。
え? そんなところをクリックできたのか!
マイページに飛んで、また入力か。

それらを回避できるイメージです!

#前提条件
– 今回はuser情報に併せて、destination(住所)情報

元記事を表示

everydayrailsで Selenium::WebDriver::Error::WebDriverError: がでた (geckodrive)

macosです。

追記: すいません。この記事ではfirefoxを使えるようにしたのですが、chromeを使うべきだそうです。
# 「ドライバのダウンロード」

Unable to find Mozilla geckodriver. 
というエラー文が出ていたので、(実際に出たエラー文cpし忘れたのでこれじゃないかもしれませんがほぼこれです) **geckodriver** をダウンロードする。

ダウンロードは
https://github.com/mozilla/geckodriver/releases
このURLからした。

macos,linux,winなどいくつか種類があるので自分のPCにあったのを選ぶ。

# 「ドライバをPATHに置く」

とりあえず初心者でPATHの設定が初めてだったのでディレクトリをDesktopに作成し、そこにブラウザでダウンロードしたgeckodriveを入れといた。

実際にPATHを通す

ターミナルで一応
`$ echo $PATH`
でPATHを確認(しなくていいけど)すると

`/いつも通り出てくるデフォルトのPATH/`
になってる

元記事を表示

Rails 404エラー画面を設定した時にrefileで設定した画像が表示されなくなる

# 概要

備忘録代わりに書かせていただきます

Railsでroutesの最下行に

“`ruby:routes.rb
get ‘*path’, to: ‘application#render_404’,
“`

でどのパスにもいかなかった場合に404エラーを独自で出力するように設定した場合に、
Refile等で指定されたattachment_image_tagの画像が表示されない。

# 原因

ログを見たらすぐに分かるんですけど、attachment_image_tagでURLを生成して、GETを送ってRoutesを通る時にrefileではroutesの設定が無いので、当てはまるパスがなく404のgetを返してしまうという話。

#解決法
もっと綺麗なやり方があるのかもしれないですけど、とりあえずRoutesのconstraintsを使ってrequestオブジェクトのurlに”attachments/”が含まれている場合は404の行を通らないようにして回避しました。

もっといい方法100%あるような気がするので、よかったらコメントで教えていただけると嬉しいです。

“`

元記事を表示

findとfind_byの違いを初心者がまとめてみました。

この記事では**find**と**find_by**の違いについて分かりやすく伝わるように書いてみようと思います。
わかりにくいところがあれば参考記事も確認して、しっかりと理解していただければ幸いです。

#findとは
– **id**を検索キーとして、取得したいモデルから特定のデータを取得する方法
– findを使用する場合には、**id**以外では検索できない
– 要するに、取得したいデータの**id**が分かっている場合に使用するといい
– 検索の仕方は モデル名.find(id) 例:User.find(1)

####使用方法
例えばUserモデルにあるtaroさんのデータが欲しいとします。
その場合、findで検索するとなると **id** で検索してあげる必要があります。

Userモデル

| id | name | age |
|:–:|:-:|:-:|
| 1 |taro |23 |
| 2|jiro |20 |
| 3|sabu |18 |

“`
User.find(1)
→ユーザモデル(User)から、idが1(find.(1))のものを

元記事を表示

heroku で Active Storage を通して GCS に接続時 Neither PUB key nor PRIV key: nested asn1 error が発生する

*ローカル環境では正しく接続できている前提です

### ローカルで動いてもherokuで動かない
ローカル環境では正常に接続できていてもherokuにデプロイすると
`Neither PUB key nor PRIV key: nested asn1 error`
が発生する
エラー時のstorage.yml

“`ruby:storage.yml
google:
service: GCS
credentials:
type: “service_account”
project_id: “”
private_key_id: “<%= Rails.application.credentials.private_key_id %>”
private_key: “<%= Rails.application.credentials.private_key %>”
client_email: “”
client_id: “”
auth_uri: “”
token_uri: “”
auth_provider_x5

元記事を表示

あなたの日本語をRails語に翻訳する辞書 データベース編

#はじめに
TECH CAMPというプログラミング教室に40日ほど通った添野です。
本日はRailsで重要な概念「**データベース**」という概念を説明していきます。

皆さんはRailsにおける「**データベース**」が何なのか説明できるでしょうか?
この記事を読めば、**かなり具体的**に説明できるようになります。

※MySQLの使用を前提に記事を書いています

#結論
データベースとは「**配列に入った配列に入ったハッシュ**」です。
わかりやすく説明するため、**徐々に進化**させて説明していきます。

**値**
雑魚敵。ドラクエでいう「スライム」です。
最終的に**ビューで表示したい**のはこいつです。

“`
りんご
“`

**配列**
雑魚敵の集合体です。ドラクエでいう「キングスライム」です。

“`
[りんご , ゴリラ , ラッパ]

簡略化すると:
[A,B,C]
“`

**配列に入った配列**
キングスライムの集合体です。キングスライムって進化すんの・・・?
Rubyというゲームの場合は無限に進化します。

“`
[ [りんご ,

元記事を表示

vistaでkicad その3

#概要

vistaでkicadやってみた。
sketchupで、vrml書いて、kicadで読み込んで見た。

#環境

windows vista 32bit
kicad 4.0.4
sketchup 8

#sketchupでbox書く。

![image](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18104/454e2d8a-d4cd-7a96-55e9-6166a057f044.png)

#skp_to_vrml.rbで出力。

“`
#VRML V2.0 utf8
Shape {
geometry IndexedFaceSet {
coord Coordinate {
point [
1.000000 0.000000 -1.000000 ,
0.000000 0.000000 -0.000000 ,
0.000000 0.000000 -1.000000 ,
0.000000 0.000000 -0.000000

元記事を表示

Kinx 実現技術 – Fiber

# Fiber

## はじめに

**「見た目は JavaScript、頭脳(中身)は Ruby、(安定感は AC/DC)」** でお届けしているスクリプト言語 [Kinx](https://github.com/Kray-G/kinx)。作ったものの紹介だけではなく実現のために使った技術を紹介していくのも貢献。その道の人には当たり前でも、そうでない人にも興味をもって貰えるかもしれない。

前回のテーマは [Garbage Collection](https://qiita.com/Kray-G/items/1ee8710d2a70a037f861)。今回のテーマは Fiber。

* 参考
* 最初の動機 … [スクリプト言語 KINX(ご紹介)](https://qiita.com/Kray-G/items/ca08b6fb40d15dd0ec76)
* 個別記事へのリンクは全てここに集約してあります。
* リポジトリ … [https://github.com/Kray-G/kinx](https://github.com/Kray-

元記事を表示

VS codeの初期設定とRuby on Railsの環境設定

初期設定につまづくとかなり時間をロスするので、まとめることにしました
# VSCodeの初期設定
## VSCode(Visual Studio Code)をインストール
1. [VSCodeダウンロードページを開く](https://code.visualstudio.com/)
![スクリーンショット 2020-03-31 5.50.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455403/676793f7-9452-c1e2-879b-3cbe7ea9c825.png)
2. Download for Macをクリックして、ダウンロードを完了します

## VS Codeに拡張機能を追加

### 追加する拡張機能

– Japanese Language Pack for Visual Studio Code →日本語表記にします。

![スクリーンショット 2020-03-31 5.56.45.png](https://qiita-image-store.s3.ap-northeast

元記事を表示

[devise]現在ログインしているユーザ名が表示されない場合の解決策

#環境
| |バージョン|
|:—————-:|:—————–:|
|ruby |2.6.5|
|rails |5.2.4.2|
|devise |4.7.1|

# 目標
現在ログインしているユーザの名前を表示させたい。

# 問題
[@yasuno0327](https://qiita.com/yasuno0327)氏が公開していた[devise にusername カラムを追加し、usernameを登録できるようにする。](https://qiita.com/yasuno0327/items/ff17ddb6a4167fc6b471)を参考にして実装したところ以下のようなエラーを吐いた。

“`:Error
undefined method `username’ for nil:NilClass

(意訳)
NilClassのnilオブジェクトに`username`メソッドは定義されてないよ
“`
# 解決策
“`:_current_username.html.erb
<% if us

元記事を表示

OTHERカテゴリの最新記事