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

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

コンピュータ特有の演算誤差

### この記事の執筆者
プログラミング学習を始めて、5ヶ月ほど。Vue.js Typescript Railsを学習中の大学生.

### きっかけ
Typescriptの参考書を学習中に下記のようなコードを書いたら予期しない結果になったため調べてみることにした。参考書には誤差が出る理由等は詳しく書かれていなかった。

“`js
let price = 12500
let tax = 1.1
let withTax = price * tax

console.log(“金額” + price )
console.log(`税込価格は、${withTax}`)
“`

結果

“`
金額12500
税込価格は、13750.000000000002
“`

上記のコードは定価である12,500円に対して税率である0.1を加えたものである。
期待していた結果としては下記のようなもの

12,500 * 1.1 = 13,750
****

### コンピューター特有の演算誤差

このような予期しない演算結果が出るのは、どうやら調べてみるとJavascriptだけではないようだ。

元記事を表示

【Rails】jbulderの基礎・使い方

ポートフォリオ制作でjbuilderを使ったので学習した内容をまとめました。

## jbuilderとは?
jbuilderとは、JSON形式のデータを簡単に作成することができるgem。Railにデフォルトで導入されている。

## jbuilderでできること
`app/view/〇〇.json.jbuilder`ファイル内のjsonオブジェクトに対して様々なメソッドを使うことでJSON形式の文字列のデータを簡単に作ることができる。

APIを叩く準備ができるのだと思います。(たぶん)
「APIを叩く」に関して、こちらの記事が大変わかりやすかったです。

https://qiita.com/antk/items/d762fdb3695cb85712ad

## 使い方
RailsとVue.jsを使用、取得するデータは作成済みの想定で進めます。
### 1. Jbuilderが導入されていることを確認する

“`:Gemfile
ruby ‘2.7.3’
gem ‘rails’, ‘~> 6.1.4’
・・・
gem ‘jbuilder’, ‘~> 2.7’
“`

### 2

元記事を表示

railsチュートリアル第十三章 マイクロポストを作成する

###マイクロポストを作成する
####Micropostsコントローラのcreateアクション
app/controllers/microposts_controller.rb

“`rb
class MicropostsController < ApplicationController before_action :logged_in_user, only: [:create, :destroy] # create,destroyを行う前にログインを求めらえれる。 def create @micropost = current_user.microposts.build(micropost_params) # 慣習的に関連するモデルを生成するときは、buildを使う if @micropost.save flash[:success] = "Micropost created!" redirect_to root_url # redirect_to は、view の表示には直接は関係なく、新たな Http

元記事を表示

railsチュートリアル第13章 マイクロポストを操作する

###マイクロポストを操作する
データモデリングとマイクロポスト表示テンプレートの両方が完成したので、次はWeb経由でそれらを作成するためのインターフェイスに取りかかりましょう。
#####インターフェース
IT関連では、二つのものが接続・接触する箇所や、両者の間で情報や信号などをやりとりするための手順や規約を定めたものを意味する

最後に、ユーザーがマイクロポストをWeb経由で破棄できるようにします。

####マイクロポストリソースのルーティング
config/routes.rb

“`rb
Rails.application.routes.draw do
.
.
.
# /users/1の有効にするため
resources :account_activations, only: [:edit]
# editアクションへの名前付きルートが必要になるため
# ルーティングのアカウント有効化
resources :password_resets, only: [:new, :create, :edit, :update]
# 新しいパスワードを再設定す

元記事を表示

railsチュートリアル第13章 プロフィール画面のマイクロポストをテストする

###プロフィール画面のマイクロポストをテストする
プロフィール画面で表示されるマイクロポストに対して、統合テストを書いていきます。

“`
ubuntu:~/environment/sample_app (user-microposts) $ rails generate integration_test users_profile
Running via Spring preloader in process 6991
invoke test_unit
create test/integration/users_profile_test.rb
“`

####生成されたマイクロポストfixture
test/fixtures/microposts.yml

“`yml
orange:
content: “I just ate an orange!”
created_at: <%= 10.minutes.ago %>
user: michael
# ユーザーfixtureにある対応ユーザーに関連付けることをRailsに指示できます

元記事を表示

M1でrails db:createが出来ない no suitable image found. Did find: (LoadError)諸々

M1でのrailsアプリ環境構築方法については[こちら](https://higukkublog.org/rails-m1/)でまとめています。

環境
rbenv 1.2.0
ruby 3.0.2
Bundler 2.2.32
yarn 1.22.17
DBはpostgresql

##rails db:createが出来ない問題
`rails db:create`をすると
![スクリーンショット 2021-11-26 21.10.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1573515/35b2e33f-61d1-09f1-50eb-cb2109d0c1ee.png)
このようなエラーが大量発生してしまいました。

`no suitable image found. Did find: (LoadError)`とあります。
何かがないのでしょう。(かなり曖昧)

##対処法
“`
arch -arm64 gem install msgpack bootsnap bindex zeitw

元記事を表示

rails 個人的 初学者におすすめな記事

# はじめに
今回は僕がrails初学者の時に(いまでも)よく参考にしていた記事を紹介します。
ぜひrails初学者のみなさんも参考にしてください!超おすすめです!
では見ていきましょう!

# 用語やコードの意味を調べたい時
https://pikawaka.com/

こちらのサイトはプログラミングの用語をめちゃめちゃわかりやすく説明してくれています。

例えば、「`params`ってなんや?」「データを扱うメソッド(`where`とか`find`とか)ってどうやって使うの?てかそもそもなんやねん!」ってことありませんか?
そんな時にこのPikawakaさんではめちゃめちゃわかりやすく説明してくれています!

さらに調べたものの関連した内容も記載してくれている時もあるので必要としていた以上の知識が得られます!

# 特定の機能を調べたい時
https://techtechmedia.com/

こちらのサイトはrailsのいろいろな機能などに関してわかりやすく説明してくれています。もともとプログラミングの講師をやっていた方が作っているので非常にわかりやすいです。

例えば、「SNS

元記事を表示

rails Googlemapエラー集

# はじめに
こんにちは。
とあるスクールで長めにメンターやってたもんです。
プログラミングってほんのちょっとの間違いでエラーになっちゃうから初心者の人は辛いですよね〜
今回は生徒さんのwebアプリ開発でようでる、Mapがでない・うまく表示されない問題がよくあるので、今後のメンターさんや生徒さんがちょっとでも楽になりますように。

※注意:エラーやうまいこといかんのを自分で解決する楽しさは奪いたくないのでほんまに無理な時に見てください。
# 開発環境でのエラー
### 1.そもそも地図が表示されるはず部分のスペースがない
これはhtml・cssでのミスがあると考えられます。
例えば、
2. cssの書き忘れ
3. id名あるいはclass名とセレクタ名が一致していない

これらが多いかと思います。

### 2.マップを表示するためのスペースはあるがマップは表示されず空白になっている。
こちらすごく多いです。なので原因もたくさんあります。
考えられる限りの原因を記していきますね。
1. id名とgetElemmentByIdの名前が一致していない。
2. .envファイルへの記述が間違

元記事を表示

[Rails] AWS SESのSMTPサーバを使う大まかな流れとSandboxを解除したやりとりの記録

Deviseのパスワード発行メールのように、受信を気にしないメールをサクッと飛ばしたい時がままあるので記事にしました。

# Rails
## gem
gem ‘aws-sdk-rails’
## ActionMailer
“`ruby
# config/initializers/aws.rb

Aws::Rails.add_action_mailer_delivery_method(
:ses,
credentials: Aws::Credentials.new(ENV.fetch(‘AWS_ACCESS_KEY_ID’) { ‘AWS_ACCESS_KEY_ID’ },
ENV.fetch(‘AWS_SECRET_ACCESS_KEY’) { ‘AWS_SECRET_ACCESS_KEY’ }),
region: ‘ap-northeast-1’
)
“`
“`ruby
# config/environments/production.rb

config.action_mailer.deliver

元記事を表示

Railsのセットアップの時、mysql2というgemのせいでbundle installができない時に見る記事

## 概要
Rails + MySQLで開発環境を構築する際に発生しうるそこそこややこしいエラーについて、自分なりにまとめてみました。
**※Railsの中で、mysql2というgemを使用してます。**

## 発生したエラーについて
Railsのプロジェクトを“`rails new“`コマンドで作成後、bundle installした際に下記のエラーが発生することがある。

“`Bash
…省略

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

…省略

linking shared-object mysql2/mysql2.bundle
ld: library not found for -lssl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [mysql2.bundle] Error 1

make failed, exit code 2

G

元記事を表示

DBに保存できないデータを受け取るとき

DBに保存できないデータを受け取るとき(検索のパラメータなど)

“`モデル.rb
attr_accessor:
“`

を使えばいいらしい

元記事を表示

railsで作るURL(ルート)について[超基礎]

#ルータが作るURLは何者?

クライアントとサーバー間でデータ受け渡すために指定された道のり

#具体的に

“`
$ rails g model Users name:string
$ rails db:migrate
“`

“`
$rails g controller Post index create
“`
説明のために、UsersテーブルとPostコントローラを作りました

“`controller/posts_controller.rb
def index
user = User.all
end

def create
user = User.new
user.save
end
“`
とりあえず、Postsコントローラに簡単な処理を書きました。
超簡単に説明すると、

indexアクションでは、
UserテーブルのDBから、Userテーブルのデータをクライアントに返す処理

createアクションでは、
クライアントから受け取ったデータを、DBのUserテーブルに保存する処理
が書かれています

###ルートを作る

ようやくルート

元記事を表示

fatal: remote origin already exists 新たにBitbucket上にリポジトリを作成してpushしようとしたらできなかった話。

#Railsチュートリアル3章の序盤で起きた問題

Bitbucket上にリポジトリを作成してpushしようとしたら

“`

$ git remote add origin git@bitbucket.org:ユーザー名/sample_app.git
fatal: remote origin already exists
“`

“`

$ git push -u origin –all
Please make sure you have the correct access rights
and the repository exists.
“`

エラーをコピーしてないので前後にもう少し文があったような気もしますが、こんな感じのエラーが出てきました。

__入れ物作れないしpush出来ないし!__

もうホント手順通りに進めてもうまくいかないんだから困っちゃうよなあw

さてさてブツクサ言っても問題は解決しません。
❶の方に関しては、もうあるみたいなので再度やる必要はないのですが、私はなんでもやってみたいので、一旦 origin を消して入れ直しました。

__

元記事を表示

Herokuへseedデータを流したら詰まった

#概要

heroku run rails db:seedを実行したらエラーが起きた。

#結論

古い本番環境のデータが残っていたのが原因。

##それまでの過程
➀Herokuへログイン

“`
$ heroku login –interactive
“`
➁Herokuへデプロイして、本番環境でのマイグレーションファイルを生成

“`
$ git push heroku master
$ heroku run rails db:migrate
“`

➂初期データ(seed)を流し込む

“`
$ heroku run rails :seed
“`
##はい、ここで詰まります。
ActiveModel::UnknownAttributeError: unknown attribute ‘user_area’ for User.

Userテーブルにuser_areaのカラムがないんだと。
ここでschema.rbを確認。すると…

“`
create_table “users”, force: :cascade do |t|
t.string “name

元記事を表示

【rails】ログインユーザーに一回だけ回答させる (サンプル例)

ログイン、質問投稿、投稿に対する回答ができるアプリがある。
各ユーザーが各質問に対して一回だけ回答できるように設定したい

# 1.モデル

ユーザーを表すmemberモデル、投稿した質問に関するpostモデル、
質問に対する回答を表すanswerモデルがそれぞれある。
各モデルの関係は以下

“`app/models/answer.rb
class Answer < ApplicationRecord belongs_to :member belongs_to :post end ``` ```app/models/post.rb class Post < ApplicationRecord has_many :answers, dependent: :destroy belongs_to :member end ``` ```app/models/member.rb class Member < ApplicationRecord has_many :answers, dependent: :destroy has_many :posts, depe

元記事を表示

Rails scaffoldを使ってRailsに入門する

## はじめに
Railsのscaffoldを使用してCRUDのアプリケーションを生成してみます。
また、生成されたコードを読み解いて処理の流れをざっくりと読み解いてみます。

なお、本編の内容はRailsチュートリアルの2章を参考にしています。随時、参考になった文献を記載しています。

[第2章 Toyアプリケーション – Railsチュートリアル](https://railstutorial.jp/chapters/toy_app?version=5.1#sec-demo_users_resource)

## Rails scaffoldとは

– Railsの機能の一つで、コマンド1つでCRUDの雛形を作成することが出来る
– scaffoldとは「足場」という意味を持ち、Railsアプリケーションの足場を作る機能と言える

[What is Scaffolding in Ruby on Rails? – RubyGuides](https://www.rubyguides.com/2020/03/rails-scaffolding/)

## 使ってみる
### scaffo

元記事を表示

マイグレーションエラーについて

railsでデータベースを用意する際に、

“`
$ rails generate scaffold ・・・
“`

コマンドなどでマイグレーションファイルを作成した後、

“`
$ rails db:migrate
“`

でデータベースの変更を反映しないと、
ActiveRecord::PendingMigrationError
マイグレーションエラーとなってしまいます。
![2021-11-25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2222596/bdbfc058-ca2e-1d2b-dcf8-a7fe9c9260cd.png)

忘れないようにしましょう。
(偉そうにすみません。自分が忘れていたので。)

以上

元記事を表示

【Rails】ルーティングのまとめ

##概要
railsのroutes.rbに記述するルーティングについてのまとめ。

##内容

####ルーティングとは
受け取ったurlを認識し、適切なコントローラ内アクションやアプリケーションに割り当てる機能。

####構文
“`
httpメソッド ‘urlパターン’, to: ‘コントローラ#アクション’
“`

#####ex) 以下のhttpリクエストを受け取った場合、以下のようになる。
“`
GET /patients/17
“`

routes.rb

“`
get ‘/patients/:id’, to: ‘patients#show’
“`

### HTTPメソッド

クライアントから送られたリクエストの種別を表すもの。

####get 
ページを表示する操作。

####post 
データを登録する操作。

####put 
データを変更する操作。

####delete 
データを削除する操作。

###rootの設定 
[http://localhost:3000 /](http://localhost:3000/%E3%80%8D) にアクセ

元記事を表示

改【Railsチュートリアル】プロフィール画像をアプリ内で設定できるように変更

#はじめに
前回の記事[【Railsチュートリアル】プロフィール画像をアプリ内で設定できるように変更](https://qiita.com/supyolo888/items/def08450cc4190977324)で、sample_appにおいて、プロフィール画像をアプリ内で設定できるようにしたが、本番環境でアセットパイプラインに関してのエラーが発生したため、carrierwaveを用いた方法に変更する。
また、[Rialsチュートリアル第6版13章](https://railstutorial.jp/chapters/user_microposts?version=6.0#sec-image_upload_in_production)においてAWSのS3を作成済みなので、今回は本番環境のみそちらにアップロードするよう設定していく。

**前提**
第6版sample_appが完成している

#carrierwaveの設定

Gemfileにcarrierwaveを追加

“`rb:Gemfile
gem ‘carrierwave’
“`

“`
$ bundle insta

元記事を表示

【Ruby】早期リターンと倒置if

##早期リターン
式の値を戻り値としてメソッドの実行を終了します。式が省略された場合には nil を戻り値とします。

引用:https://docs.ruby-lang.org/ja/latest/doc/spec=2fcontrol.html#return

“`ruby
def greeting(flag)
‘good evening’
return ‘good night’ if flag
false
end

greeting(true)
# => “good evening”
greeting(false)
# => false
“`

##倒置if
条件文がfalseのときnilを返す

“`ruby
def greeting(flag)
‘good evening’
‘good night’ if flag
end

greeting(true)
# => “good evening”
greeting(false)
# => nil
“`

元記事を表示

OTHERカテゴリの最新記事