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

Ruby関連のことを調べてみた2022年08月10日
目次

ENVの意味がわからなかったけど調べたら簡単だった。

はじめに

githubで有名なgemのコードを読んでみると、全く知らない文字列が羅列していて、そもそもどんな風にコードを読めばいいかわからないと言うことを何度も経験しました。
プログラミングを始めたばかりは(まだまだ初学者ですが。。)わからないものが羅列していると何が何やら訳が分からなくなり、単純に恐くて手をつけたくないと思ってしまっていました。
でも一つ一つの単語を調べて理解が少しできると怖さが激減するんだな、ということを経験の中で知ることができました。

少しでも疑問に感じたことはそのままにせず調べて、備忘録としてアウトプットをしていこうと思います。

ENV.fetch(“~”)の文字列が怖かった

現在ポートフォリオを作成している中で、twitter apiを使ってtwitterのアカウントでログインができる機能を実装しています。

その機能のためにネットの記事を参考にしていた際に、下記のコードが出てきました。
~~~
ENV.fetch(”TWITTER_KEY”)
~~~
いつもコードを書くときは大抵小文字なのに、ENVは大文字と言うだけで少し怖っ、、と思ってしま

元記事を表示

Rails7でSvelteを使えるようにする

Rails7でSvelteを使う方法ってないのかな?と探していたんですが、全く見つからなかったので自分で試行錯誤した記録をここに記します。

やったことの軌跡がわかるようにPRを作ってありまして、基本このコミットの通りにやれば使えるようになるはず。

https://github.com/yuki-noguchi/svelte-rails7/pull/1

# 手順

## rails newする
このとき、`-J`や`-j`オプションをつけて、javascript関連のファイルは生成されないようにしたほうが良いかもです。
後述しますが、`vite_rails`を使用するので、生成されるjavascript関連のファイルが邪魔になるかもです。
自分は`–minimal`をつけちゃいました。

## ‘vite_rails’を追加する

Gemfileに以下を追記して、

“`
gem ‘vite_rails’
“`

bundle install実行。

“`shell
bundle install
“`

さらに、初期化コマンドを実行。

“`
bundle exec v

元記事を表示

【Rails】ActionMailerでお問合せフォームを作ろう!!

# はじめに
お問合せフォームをActionMailerを使って実装する方法を調べ、実装した。

**完成予想図**
以下のようなものを作る。
①お問合せフォームの作成
![スクリーンショット 2022-08-09 22.46.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2684787/b96d1935-4119-26e2-bcca-33416e39bbc6.png)
②確認画面の作成
![スクリーンショット 2022-08-09 22.46.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2684787/8b1bb9c0-bf79-b113-c6af-a7f32dfa9f32.png)
③送信後、ホームへリダイレクト
![スクリーンショット 2022-08-09 22.43.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0

元記事を表示

[Rails6系] auth0を使用したSNSログイン機能をHerokuにデプロイするまで

### 前提
記事を書いている私は現役のエンジニアではなくエンジニアを目指して学習中の者です。
よって、気をつけてはいますが記述内容には誤った内容が含まれている危険性があります。
その為この記事は参考程度に読んで頂き詳しい内容は公式の記述を参考にすることをおすすめします。

### この記事で実装すること
auth0とdeviseを使用してRailsアプリで簡単にSNSログインができる機能を実装し、Herokuにデプロイするまでの手順を説明します。
deviseを使用してユーザーの新規作成ができるRailsアプリがあることを前提に進めていきます。

### 使用技術
Ruby 3.1.2
Rails 6.1.6
Heroku
Deviseでユーザー新規作成機能実装済み

### 実装手順
auth0への登録からRailsアプリへの連携までについても説明しますがこの辺については以下のQiita記事や公式のチュートリアルがとても分かりやすいので参考にして下さい。
[公式のチュートリアル](https://auth0.com/docs/quickstart/webapp/rails/int

元記事を表示

ruby on rails を AWS Cloud9で実施 5 QandAサイト作成 バリデーション追加まで

https://qiita.com/TaichiEndoh/items/35294ff656499d9bbf8d

https://qiita.com/TaichiEndoh/items/9c19319df04a279403a3

https://qiita.com/TaichiEndoh/items/057d35eff8cadbd434ba

https://qiita.com/TaichiEndoh/items/522e956d569e5bbd7b8d

# 前回の続きでQandAサイト作成します

環境 AWS Cloud9
environment type EC2
instance type t2.micro
platform ubuntu server 18.04 LTS

## 質問の編集機能を実装

まずはviewの表示を変更します

app/views/questions/edit.html.erb
を作成します

“`app/views/questions/edit.html.erb

Edit

<%= form_with model: @qu

元記事を表示

【ポートフォリオ作成2日目】githubのissue活用とrspecのセットアップ

# 概要
– githubのissue機能を使ってタスク管理をする。
– rspec(Ruby用のテストフレームワーク)を使ってTDD(テスト駆動開発)を行うための準備をする。
# githubでタスク管理
– [GitHubのissueを活用した個人アプリの開発手順を書いてみた](https://qiita.com/tkmd35/items/9612c03dc60b1c516969)
– [Githubにissueのテンプレートを作成する方法](https://note.com/koushikagawa/n/n0dcc592d3045)
# rspecのセットアップ
– [rspecをgemでインストール](https://zenn.dev/fu_ga/books/ff025eaf9eb387/viewer/f2c0c9)
# 参考
– [使えるRSpec入門・その1「RSpecの基本的な構文や便利な機能を理解する」](https://qiita.com/jnchito/items/42193d066bd61c740612)
– [Everyday Rails – RSpecによるR

元記事を表示

【Railsチュートリアル】しょっぱなからバージョンを間違えた話

どうもこんにちは
先日Railsチュートリアルを始めたtaku3ukatです。

Railsチュートリアルではver.6.0.4を使い、以下コマンドで指定します。

“`
rails _6.0.4_ new (任意の環境名)
“`
ただrailsのバージョン確認をすると6.0.5.1と表示されるではありませんか…

#### とりあえずRails 6.0.5.1を消してみる。
“`ruby:削除コマンド
gem uninstall railties -v ‘6.0.5.1’
“`

“`ruby:削除結果(ターミナル)
You have requested to uninstall the gem:
railties-6.0.5.1

rails-6.0.5.1 depends on railties (= 6.0.5.1)
If you remove this gem, these dependencies will not be met.
Continue with Uninstall? [yN] y
Successfully uninstalled

元記事を表示

【ポートフォリオ作成1日目】開発環境とrailsアプリケーション作成

# 概要
Webエンジニア転職用のポートフォリオ作成の過程を記録する。
[Ruby on Rails チュートリアル](https://railstutorial.jp/)を1週した後のレベル感。
– PC:M1 MacBook Pro
– エディタ:Visual Studio Code
– ターミナル:iTerm
# rubyのインストール
– [homebrewでanyenvをインストール](https://brew.sh/index_ja)
– [anyenvでrbenvをインストール](https://github.com/anyenv/anyenv)
– [rbenvでrubyをインストール](https://github.com/rbenv/rbenv)
– [(参考)PATHを通すとは? (Mac OS X)](https://qiita.com/soarflat/items/09be6ab9cd91d366bf71)
# railsアプリケーションの作成
– [gemでrailsをインストール](https://guides.rubyonrails.org/gettin

元記事を表示

【Rails】joinした先のテーブルで昇順降順のソートもしたい

## bad

joinした先のテーブルでソートする場合

“`ruby
User.eager_load(:posts)
.order(‘posts.title’)
“`

という例をよくみるが、これだと文字列を使う&昇順・降順のソートができない。

## better

“`merge“`を使うことでjoinした先のテーブルで昇順・降順のソートができる。

“`ruby
User.eager_load(:posts)
.merge(Post.order(title: :asc))
“`

## 参考

https://railsdoc.com/page/model_order

https://qiita.com/shshimamo/items/bd8150598cf2a157b980

元記事を表示

記事作成テンプレート

“`
# 概要
– [リンクテキスト](URL)
– [リンクテキスト](URL)
# 1
– [リンクテキスト](URL)
– [リンクテキスト](URL)
# 2
– [リンクテキスト](URL)
– [リンクテキスト](URL)
# 参考
– [リンクテキスト](URL)
– [リンクテキスト](URL)
“`

元記事を表示

docker-compose buildで You must use Bundler 2 or greater with this lockfile.エラーが出る

docker-compose buildをしたときにエラーが発生したため備忘録として残しておきます。
ググってみてもよくある解決策で解決しなかった人のためになれば幸いです。

“`ruby:Dockerfile
FROM ruby:2.5.1

RUN apt-get update -qq && \
apt-get install -y build-essential \
nodejs\
mariadb-server\
mariadb-client

WORKDIR /portfolio

COPY Gemfile /portfolio//Gemfile
COPY Gemfile.lock /portfolio//Gemfile.lock

RUN gem install bundler
RUN bundle install

RUN mkdir -p tmp/sockets
“`

この状態でdocker-compose buidを実行すると以下のエラーが発生。

“`
=> ERROR [7/8] RUN bundle install

元記事を表示

ruby on rails を AWS Cloud9で実施 4 QandAサイト作成 バリデーション追加まで

https://qiita.com/TaichiEndoh/items/35294ff656499d9bbf8d

https://qiita.com/TaichiEndoh/items/9c19319df04a279403a3

https://qiita.com/TaichiEndoh/items/057d35eff8cadbd434ba

具体的な説明は上記を確認願います

環境 AWS Cloud9
environment type EC2
instance type t2.micro
platform ubuntu server 18.04 LTS

# QandAサイト作成

## 新規プロジェクト作成

今回もバージョンを指定して立ち上げたいので

“`
rails new qanda _7.0.0_
“`
qanda プロジェクトが確認できます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2629668/50ae80c6-6006-a0ff-fb68-59c8

元記事を表示

Rails6 rakutenAPI 公式documentを見ながら実装

## 初めに
今回この記事では、簡単にgemを用いてruby on railsでrakutenAPIを叩き、データを取得する方法を解説していこうと思います。
rakutenAPIの記事はかなり溢れているのですが、APIkeyを扱うのに直接initilizerに貼り付けたりや、公式のリンクが期限切れになっているものが多かったので書かせていただきました。

### 環境
– ruby
– 3.1.2(rbenv) <- 2.7以上であればOK - rails - 6.1.6.1 <- 6系であれば同じ ## 実装手順 - APIkey取得 rakuten developersにアクセス [こちら](https://webservice.rakuten.co.jp/)にアクセス 右上のログインからrakutenの会員情報を使ってログインする。(通常の楽天アカウントでok!) ログインできたら、右上の+new appをクリック ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.c

元記事を表示

速度改善のためRailsコードをGoで書き直して、FFIを使ってみた

railsのコードをgolangに書き直したら、10倍早くなりました
===================================

ffiでgoを呼び出すようにすると早くなるという記事を見たので、

実際に使用してみたら、本当に10倍ほど早くなりました。

## ディレクトリ構成
今回はrailsなのでlib配下にffiディレクトリを用意して、その中にソースコードをおきました。

+ /app
+ /models
+ test.rb
+ /lib
+ /ffi
+ sample.rb
+ .directory-list.md
+ /src
+ sample.go
+ /model
+ data.go
+ /bin
+ sample.so

## 事前準備

ffiのgemを入れておく
“`
gem install ffi
“`

go.mod ファイル作

元記事を表示

Active Recordについて

# Active Recordとは
簡潔に言うと、SQLをRubyに翻訳したもの。
MVCのM(モデル)がデータベースのデータを扱う際、本来であればSQL文でクエリを発行するが、RailsにはActive Recordのお陰で、Rubyでデータベースを操作することができる。
また、SQLではDBシステムによって互換性があるが、Active Recordでは、DBシステムの種類に関わらず、同じ記法が使えるのもメリットの一つ。

# CRUD処理でよく使うメソッド
自身が現在CRUD処理の実装を復習しているので、Create(作成)、Read(参照)、Update(更新)、Delete(削除)の流れでよく使うメソッドをまとめていきます。

# Create(生成)でよく使うメソッド
“`ruby
@user = User.new(name: “山田”, age: 22)
# userモデルのインスタンスの作成 DBには保存されない

@user.save
# 上記のnewで作成したインスタンスをDBに保存

@user.create(name: “山田”, age: 22)
# インスタ

元記事を表示

ruby on rails を AWS Cloud9で実施 3 model作成 

https://qiita.com/TaichiEndoh/items/35294ff656499d9bbf8d

https://qiita.com/TaichiEndoh/items/9c19319df04a279403a3

環境 AWS Cloud9
environment type EC2
instance type t2.micro
platform ubuntu server 18.04 LTS

# Model を作成する

Rails が提供するModelは、
原則としてデータベース上にある
テーブルと対応しており

テーブルのデータを簡単に操作する機能を提供します

## MVC アーティテクチャの再確認
– Model:アプリで扱うデータを保持し、操作する
– View:受け取ったデータを表示する
– Controller:ユーザーからのリクエストを処理し、モデル・ビューを呼び出して結果を返す

http://www.rubylife.jp/rails/ini/index7.html

http://qiita.com/tshinsay/items/5b17

元記事を表示

Ruby バイナリーサーチ

# バイナリーサーチとは
ソート済みのリストや配列に入ったデータ(同一の値はないものとする)に対する検索を行うときに用いられる手法です。まず、中央の値を確認し、検索したい値との大小関係を用いて、検索したい値が中央の値の右にあるか、左にあるかを判断します。それを繰り返し、片側には存在しないことを確かめながら検索していく方法です。

“`
#13の位置を知りたい
array = [2, 3, 5, 6, 8, 10, 11, 13, 16]
#添字    0, 1, 2, 3, 4, 5, 6, 7, 8
                             ↓
[10, 11, 13, 16]
#添字 5, 6, 7, 8

[13, 16]
#添字 7, 8
“`
上記のような配列があったとして「13」を検索したいとしたら、まず配列の中央の要素を求める。4番目が中央なので「8」。ターゲットの「13」は「8」より大きいとなるので次は「10」を左端として検索する。

次に

元記事を表示

ruby on rails を AWS Cloud9で実施 2 コントローラー Viewについて python初心者

https://qiita.com/TaichiEndoh/items/35294ff656499d9bbf8d

前回の続きです

環境 AWS Cloud9
environment type EC2
instance type t2.micro
platform ubuntu server 18.04 LTS

## controllerの作成

まずは
controller
を作成してみます

## MVC アーキテクチャの復習
model
データベースアクセスなど データ関連処理

View
画面表示

controller
リクエストやレスポンスを制御
view と model の橋渡し

さっそくコマンドを入力します

generate を g 省略可能です
“`
rails g controller
“`
上のコマンドで controller を作成してくださいという
命令になります

#### 今回は rails g controller users index を実施
以下の users はコントローラーに付ける名前です
データベースと連携する場合は複数形にするの

元記事を表示

100日後くらいに個人開発するぞ!day067

## 今日はルーティングを整えて新規ファイルを追加してみた!

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2632394/4ee73fef-da7d-5e93-836a-e72c26557dbf.png)

## 今日の学び
### ルーティング
* ルーティングを書き換えることでトップページのURLを変更することができる
* `”home#top”`の部分が変わらない限りhomeコントローラのtopアクションに対応するビューファイルの内容がブラウザに表示される

### コマンド
* コマンドは「コントローラ名」と「アクション名」が含まれる
* `rails generate controller コントローラ名 アクション名`を実行することで対応するファイルが自動で用意される
* 同じ名前のコントローラがある場合はコマンドを使うことができない

### ルーティングとアクションを追加する
* ルーティングとコントローラのファイルにコードを書き足すことでルーティングとアクショ

元記事を表示

deviseとdevise_token_authとomniauthの使い分けがわからなかったので調べてみた

はじめに

自分の備忘録として、わからなかったことや詰まった部分をアウトプットしています。
同じ部分で悩んでいる方の力になったら幸いです。

何に詰まったのか

現在ポートフォリオを作成しており、バックエンドをrails apiで開発をしています。
その中でアカウントを作成しなくてもTwitterのアカウントでログインができる機能を実装したいと考えました。

この機能を実現するためには、ログイン機能のgemとして有名なdevise以外に何が必要なのかな?と思い調べたところ、
・devise_token_auth
・omniauth
のgemが検索でヒットしました。

実装方法についてはたくさんの記事があったので、おそらく理解していなくてもなんとなくで作成できる気がします。
「それぞれ何の役割があるのか/何をしたいときにどのgemが必要なのかが分かっていない」まま開発をしてもエラーの際にとても時間がかかったり、目的からずれた使い方をしてしまうと思ったので実装前にそれぞれの役割を簡単に整理しようと思いました。

色々な記事を参考にして自分なりに整理をしてみましたが、ポートフォリオ

元記事を表示

OTHERカテゴリの最新記事