Rails関連のことを調べてみた2021年12月10日

Rails関連のことを調べてみた2021年12月10日

【Rails】resourcesとresourceの違い

表記ミスかと思ったらちゃんと“`resource“`も存在した。

##resources

“`routes.rb

resources :posts

“`

“`
Prefix Verb URI Pattern Controller#Action
posts_path GET /posts(.:format) posts#index
POST /posts(.:format) posts#create
new_post_path GET /posts/new(.:format) posts#new
edit_post_path GET /posts/:id/edit(.:format) posts#edit
post_path GET /posts/:id(.:format) posts#show
PATCH /posts/:id(.:format)

元記事を表示

Ruby on Rails 備忘録

https://prog-8.com/

##新規プロジェクト
* 入力したアプリケーション名と同名のフォルダが作成され、その中に開発に必要なフォルダやファイルが用意されます。

“`
rails new tweet_app
“`
##サーバーの起動
* 開発中のアプリケーションをブラウザで表示するためには、サーバーというものを起動する必要があります。サーバーの起動は、「rails server」というコマンドを実行するだけで完了です。
サーバーを起動した後、ブラウザで「localhost:3000」というURLにアクセスすると、右図の初期画面が表示されるようになります。

“`
rails server
“`
##ビュー /トップページの作成

* 新しいWebページが自動で作られ、「localhost:3000/home/top」というURLにアクセスできるようになります。

“`
rails generate controller home top
“`
|ポイント|説明|備考|
|—-|—-|—-|
|top.html.erb|ディレクトリ:app/vi

元記事を表示

【Jbuilder】うまくJSONを返せないときに確かめること

##その1:名前一致しているか
ファイル名やルーティングが一致してないとエラーが出たり、JSON表示できない。
特に2回くらい“`複数形s“`忘れしてるのでもう忘れない。

“`routes.rb
namespace :api, format: ‘json’ do
namespace :v1 do
resources :post_infos, only: [:index]
end
end
“`

“`app/views/api/v1/post_infos/index.json.jbuilder
json.result ‘success’
json.post_infos do
json.date @post_infos[:date]
json.genre @post_infos[:genre]
json.like_count @post_infos[:like_count]
end
“`

##その2:APIアプリケーションコントローラーを継承しているか

“`app/controllers/api/v1/post_infos_controlle

元記事を表示

【 デプロイ前後での表示の違い 】

## デプロイ後に表示させたくないボタンが表示される

ローカル環境では表示されなかった「購入ボタン」が、何故かデプロイ後には表示されてしまう。

## なぜ?
デプロイ前と、デプロイ後の表示に齟齬があるということはしっかりpushが行われていない(反映されていない)?と考えたことから再度`git push heroku main`を行う。

“`
% git push heroku main
“`
## 結果①(失敗)

どうやら問題は他にある様です。
調べても相当する記事が見当たらなかったので、「誰も犯さない様な単純なミスでは?」と視野を広げてみる。

##再仮説

GitHuDesktopを確認すると、mainブランチで何か変更している(commitもしていない状態)
そこで一度変更内容をもとに戻し、再度newブランチを作ってcommit→pushし、リモートに反映させてからマージしました。
その後、再度`git push heroku main`を行います。

“`
% git push heroku main
“`

## 結果②(成功)
無事意図した表示を確認するこ

元記事を表示

herokuの本番環境でテーブルをマイグレーションしていないことによって発生するエラー

railsで作成したアプリをherokuで実行した際、こんなエラーが出た

we’re sorry, but something went wrong.
![スクリーンショット (414).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1952299/cff17944-1b11-e68f-f22a-75c24ec1c3d0.png)
翻訳すると”申し訳ございません。不具合が発生しました。
アプリケーションの所有者である場合は、ログで詳細を確認してください。”ということである。

言われた通りにログを確認してみる。

“`
$heroku logs
“`
ログを見ていくとエラーのログが見つかった

“`
ActionView::Template::Error (PG::UndefinedTable: ERROR: relation “users” does not exist
“`
ようするに”userテーブルがみつからない”ということらしい。

調べてみたら、ローカル環境とはまた別に本番環境に

元記事を表示

cookieによるセッション管理

## はじめに
 cookieとセッション、今まで何度も調べてはいるけれどよく忘れてしまい、わかったようでわからない状態が続いていたので、この機会に言語化したいと思います。

## HTTPはステートレス
 Webサイトを閲覧するときは、ブラウザとサーバー間でHTTPプロトコルを使ってやり取りが行なわれていますが、HTTPはステートレスという特徴があり、状態を持ちません。つまり、同じユーザーからリクエストを送っても、サーバーはいつも初めまして状態で同じユーザーとは認識できないのです。
 しかし、世の中には、ステートレスでないWebサービスがあります。代表的なのが、ログイン機能でしょう。YouTubeにログインすれば、各ユーザーにあった画面をちゃんと返してくれますし、あるページから別ページに移動したときも、ユーザー情報を失うことく常に同一ユーザーであることを認識してくれます。
 このように、HTTPにステートフルな振る舞いを実現させる手法が、cookieによるセッション管理です。

## cookieとセッション
 まずセッションとは、システムにログインしてからログアウトするまでの一連の

元記事を表示

なぜrails sでサーバーが動くのか〜MacでRails + puma + Nginxでサーバー構築〜

#はじめに
皆さん、なんとなく”rails s”をして、実際はrailsでどのようにサーバーが立ち上がっているか知らずに開発をしていませんか? 恥ずかしながら、私は最近まで内部の処理を深くまで知ることなく開発を行ってきていました。
そこで、今回は”rails s”を実行したときにどのようにサーバーが立てられているのかについてとよくRailsのサーバーの構成として使われているRails + puma + Nginxについてを調べてみました。

#結論
結論から言うと、rails sするとRackというサーバーが立ち上がり、RailsはRackアプリケーションとして起動しています。

#Rackとは
Rackの入門によると
https://leahneukirchen.org/blog/archive/2007/02/introducing-rack.html
> Rack aims to provide a minimal API for connecting web servers and web frameworks.

つまり、RackはWebサーバとWebフレームワークを繋ぐ役

元記事を表示

道を文字列に変換して保存する方法【Google Map JavaScript API, Ruby】

## 概要
本記事は RUNTEQアドベントカレンダー 2021 の10日目の記事となります!

自分はデリバリーのアルバイトをしているのですが、自分の使っている近道や裏道を保存して誰かと共有できたら良いなあと思いました。

そこで、現在勉強しているRuby,Ruby on Railsを使って道を保存してGoogle Mapに表示させるお試しの機能を作ってみました。

https://polyline.herokuapp.com

↑クリックするとマーカーを置かれ、2つ以上マーカーが置かれると道が引かれます。

![タイトルなし.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1232544/8d1ed7f6-6c5c-3285-c17e-29aeda5e5c78.gif)

## 記事を作成した理由

Qiitaの記事にもGoogle mapについての記事はたくさんありますが、道(一連の座標)を保存するやり方についての記事は無いような気がしたので、この記事を作成しました。

初学者ですので間違いがあ

元記事を表示

Rails 6 + Webpacker 環境における Chart.js の導入手順

![スクリーンショット 2021-12-10 1.21.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688854/d6602156-2c17-054d-16f1-564269662ca7.png)

## 背景

Railsで作ったアプリにChart.js(JavaScript製のチャート描画ライブラリ)を導入したかったのですが、

– v2系とv3系どちらのChart.jsを使うか
– bundle install と yarn install のどちらで入れるか

など色々な要因が絡み合い、やや苦戦する場面がありました。

特に Rails6 以降は Webpacker の存在もあるため、古めの記事はあまり参考にならない事も多かったです。

そこで今回は比較的新しめの開発環境で Chart.js を導入するまでの手順についてメモを残しておこうと思います。

## 環境

– Ruby 3.0.1
– Rails 6.1.4.1
– Webpacker
– Chart.js 3.6.2

元記事を表示

【Rails】escape_javascriptメソッド【jQuery】

## はじめに
 本記事は、プログラミングの学習を始めて1ヶ月の初学者が、学習を進めていて疑問に思った点について調べた結果を備忘録も兼ねてまとめたものです。
 そのため、記事の内容に誤りが含まれている可能性があります。ご容赦ください。
 間違いを見つけた方は、お手数ですが、ご指摘いただけますと幸いです。

## 今回の疑問点
 今回の疑問点は、

  _escape_javascriptメソッドについて_
 
 です。 

 以前、非同期通信でのコメント投稿機能を実装した際に上記について疑問を抱きました。

## 疑問点についての解説

###結論
 JavaScriptファイルの中ににHTMLを記述するときに実行結果をエスケープするためのメソッド

###エスケープ処理とは

エスケープ処理とは、記述したコードのままでは意図した通り表現できない文字列や改行を表現するために使用する、代替文字列処理のことです。

具体的には以下のような文字列を表すために使用します。
!”#$%&'()*+,./:;<=>?@[\]^`{|}~  
上記に加え、半角の空白
上記は`\\`でエスケープす

元記事を表示

ruby 3.0.3を入れる

Ruby 3.0.3を入れる方法

https://qiita.com/gyu_outputs/items/8e0d91f625e1daa8720b

Rubyのバージョンアップの方法 (Rubyのバージョンを切り替える方法)

↓以下は自分用です。上の2つの記事を見ればできます。
バージョン確認
$ rbenv versions

$ brew update

$ brew upgrade rbenv ruby-build

Ruby 3.0.3が表示される
$ rbenv install -l

$ rbenv install 3.0.3

$ rbenv global 3.0.3

確認
$ rbenv versions

元記事を表示

初めてWebアプリケーションを作る過程

私にはJava Silver, ORACLE MASTER Silver SQL, Bronze DBAレベルの基礎的な知識はありますが、実際にアプリを組んだことはありません。
何を使い、どんな知識を得て、Webアプリを作っていったのか。
ぶつかった壁や利用して良かったもの、感じたことを記録します。

【ロードマップ】
https://journey.prog-8.com/ja/scenes/web-application-development/
Progateの「Webアプリケーションを形にしよう」をベースに学んでいきます。

(1/6)サーバーサイドプログラミング
・Ruby 学習レッスン I | Progate
・?(プロを目指す人のためのRuby入門[改訂2版] 言語仕様からテスト駆動開発・デバッグ技法まで (Software Design plus) | 伊藤 淳一 |本 | 通販 | Amazon)→できればWebで学べる教材が欲しい

(2/6)オブジェクト指向
・?(オブジェクト指向でなぜつくるのか 第3版 知っておきたいOOP、設計、アジャイル開発の基礎知識 |

元記事を表示

【Rails】ControllerのParamの有無でWhere条件をつけたりつけなかったりする方法

これは「[「はじめに」の Advent Calendar 2021](https://adventar.org/calendars/7037)」9日目の記事です。

## 1. モデルにScopeを追加

scopeの `filter_name_by`に `name` を渡せるようにし、 `name` が存在するときに条件がセットされるようにします。

“`ruby
class Foo < ApplicationRecord has_many :barz end class Bar < ApplicationRecord belongs_to :foo scope :filter_name_by, -> (name) { where(name: name) if name.present? }
end
“`

## 2. ControllerのParamをそのまま渡す

controllerではparamsをそのまま渡せます。

“`ruby
class BarController < ApplicationController def index b

元記事を表示

Rails Devise インストール方法

#このページの目標
DeviseをRailsにインストールする

###環境
ruby 2.6.3
rails 2.6
cloud9

#Deviseとは
Railsで作成したアプリケーションに、
ユーザー名やメールアドレスを使用してログインを行うなどの認証機能を簡単に実装する事ができるライブラリ(Gem)

#1 Gemfileに追加

Gemfileの最終行にDeviseを追加する。

“`ruby:Gemfile
gem ‘devise’
“`

注意:deviseをdeviceと記述してしまわないように気をつける

#2 アプリケーションに読み込む

追加したGemをアプリケーションに読み込むためにターミナルに記述

“`
$bundle install
“`

Gemを変更したら必ずbundle installのコマンドを実行する

#3 初期設定を行う

下記コマンドを実行し、初期設定を行う

“`
$rails g devise:install
“`

【Rails】ActiveRecordで合計(sum)した列に列名(AS句)をつけたい【GROUP BY】

# はじめに
久々にRailsを弄っているがちょっと詰まったので。

# 環境
Ruby 2.6.6
Rails 6.0.4.1
MySQL 14.14

# やりたかったこと
適当な例として、商品名,販売価格,販売日を持つ売上テーブルがある。
中身はこんな感じ。

“`markdown:売上テーブル中身
select name,money,date from sales;

えんぴつ,300,2021-11-01
消しゴム,100,2021-11-01
ボールペン,400,2021-11-03
A4用紙,500,2021-11-03
ものさし,400,2021-11-03
万年筆,8000,2021-11-04
替え芯,500,2021-11-04
“`

これを販売日ごとに売上金を合計(sum)して、その集計した列に名前をAS句で別名をつけたかった。

普通にActiveRecordで集計すると列名に応じて自動で集計列が命名される。

“`ruby:日付ごとに売上金を集計するActiveRecord
@sale = Sale.select(“date”).group(“dat

元記事を表示

【Ruby】「A && B && C」のリファクタリング

https://medium.com/@bennet.preimess/write-better-code-by-using-patterns-b850c301f27

でこんなリファクタリングの仕方ができると知ったので、
Rubyで書き換えてみた。

##JS
**before**

“`javascript
if (card == “valid” && tries <= 3 && balance <= 3000) { withdrawMoney(); } ``` **after** ```javascript function canGetMoney() { if (card != "valid") return false; if (tries > 3) return false;
if (balance > 3000) return false;
return true;
}
if (canGetMoney()) {
withdrawMoney();
}
“`

##Ruby

**before**

“`ruby

元記事を表示

身の回りにある「呪いのアイテム」を検出するサービスを未経験エンジニアが作ってみた【個人開発】

![ogp_jubutsuchecker.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641012/225633ba-b46e-fd9a-f3ba-fffab0085a3a.png)

# はじめに

@taiju365 と申します。
私は現在、未経験からWebエンジニアへの転職を目指して活動中です。
ポートフォリオはすでに1つ作成したのですが、画像認識の技術を使ってみたかったので、2つ目のポートフォリオを作成しました。

サービス名は**『呪物確認』**です。
マンガやアニメで大人気の『呪術廻戦』をヒントに作った、おバカ系サービスとなっています。

https://jubutsuchecker.herokuapp.com

2つ目のポートフォリオということで、あまり時間をかけず10日ほどで作ったサービスです。
なので改善点はたくさんありますが、十分遊べると思いますので、ぜひ使っていただけると嬉しいです。

**この記事では『呪物確認』のサービス内容や使い方、技術のご紹介をさせていただきます。**

元記事を表示

railsアプリの新規作成〜TOPページの作成

###環境
cloud9
Ruby2.6.3

###※rubyのバージョン確認方法
“`
$ ruby -v
“`

#この記事の目標
ruby on rails で新規アプリケーションを作成し、TOPページまで作成する

#1 アプリケーションの新規作成

newコマンドで新規作成

“`
$ rails new アプリケーション名
“`

カレントディレクトリを新規作成したアプリケーションフォルダに移動

“`
$ cd アプリケーション名
“`
ブラウザを起動して下記画像が出ていれば新規アプリケーションの作成に成功

#2コントローラー作成

トップページ用にコントローラを作成します。
コントロー名は必ず複数形にします。(例 ◯homes ×home)

“`
rails g controller

元記事を表示

Vision APIで物体検出した画像に四角い枠を描画する方法【Canvas】

[RUNTEQアドベントカレンダー2021](https://qiita.com/advent-calendar/2021/runteq) 9日目の記事です。

# はじめに
@taiju365 と申します。

この記事では**「Vision APIのレスポンスをもとに、四角い枠を描画する」**方法を解説します。
四角い枠とは、次の画像のように、物体が画像内のどこに検出されたかを示すものです。
![aaf9e72a4af0244a51893a499f2fbb3b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641012/fd40de68-01c6-8b89-2200-4227862b6e5f.png)

検索してもピンポイントで解説されている記事が見つからず、また実際に私がサービスを開発する中で詰まってしまった内容です。
なので、Vision APIを使ってサービスづくりをしてみたいという方は、ぜひ最後までご覧ください。

**▼Vision APIを使って開発したサービス**

https://j

元記事を表示

【Jbuilder】ハッシュはarray!が使えない

– “`@user_infos“`がハッシュの場合、

“`json
@user_infos =
{
“name”: “kato”,
“age”: 20,
“birthday”: “2001/1/1”
}
“`

“`ruby
json.name @user_infos[:name]
json.age @user_infos[:age]
json.birthday @user_infos[:birthday]
“`

JSONレスポンス

“`json
{
“name”: “kato”,
“age”: 20,
“birthday”: “2001/1/1”
}
“`

– “`@user_infos“`が配列のときみたいに“`array!“`でやってみたができなかった。
– “`array!“`でやって部分テンプレートを使いたかったけどハッシュの場合はそういうのできないのかな…

元記事を表示

OTHERカテゴリの最新記事