Rails関連のことを調べてみた2020年03月16日

Rails関連のことを調べてみた2020年03月16日

AWS EC2 でgit pull origin master ができない時の対処法

### はじめに
ローカル環境からgithubにpushをし、EC2からpullをしたときにエラーが出たのでメモを残します。

以下の記事を参考にして対処しました。
[本番環境でpullしたらコンフリクト?解決法3パターン!【Please commit your changes or stash them before you merge】](https://qiita.com/15grmr/items/433ee3b47828aaad32a8)

### エラーの内容

“`
$ git pull origin master
From https://github.com/user-name/app-name
* branch  master -> FETCH_HEAD
Updating e05c05f..050505
error: Your local changes to the following files would be overwritten by merge:
Gemfile.lock
co

元記事を表示

rspec-railsで使うコマンドを羅列する

使うコマンドを雑多にメモる。

# 導入

“`ruby:Gemfile
group :development, :test do
gem ‘rspec-rails’, ‘~> 3.6.0’
gem ‘factory_bot_rails’
end
“`

“`ruby:spec/support/factory_bot.rb
RSpec.configure do |config|
config.include FactoryBot::Syntax::Methods
end
“`

“`terminal
$ rails g rspec:install
…..
“`

元記事を表示

gemとbundlerまとめ

##まえおき
PJで運用保守にあたる中でgemのメモリ効率改善アップデートを取り入れたく

元記事を表示

テーブルのカラムに変更を加えたいです 【 rails 】

##マイグレーションファイルとは

マイグレーションファイルとは、テーブルのカラムを追加したり消したり型を変更したりする役割があるファイル

また、何か、カラムに変更を加える場合、必ずマイグレーションファイルを記述する必要がある

##初めに

あーーnameカラム邪魔だなーと、 おもたら削除しましょう?

#テーブルのカラム削除方法

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538355/3547fcba-983b-c282-1915-9df139ec73c3.png)

①ターミナルに下記のコマンドを記述して実行する

rails generate migration テーブル名 カラム名:データ型

“`
helloland@hellolandnoAir freemarket_sample_65a % rails generate migration users name
“`

②マイグレー

元記事を表示

Railsのtravel_toについてまとめた

## はじめに
日付関係のテストをしていたときに、`travel_to`を使うといいと教えてもらいました。
今回は、`travel_to`メソッドについてまとめていきます。

## travel_toとは
`ActiveSupport :: Testing :: TimeHelpers`のメソッドの一つです。

変更したい日時を渡すと、`Time.now`、`Date.today`、`DateTime.now`で返される日時を変更することができます。

## コード例

`travel_to do`と`end`で囲まれた部分の中だけ、時間が変更されています。

コメント文のとおりに出力されました。

“`rb
it ‘puts date and time’ do
travel_to Time.zone.local(2020, 03, 16) do
pp Date.today # -> Mon, 16 Mar 2020
pp Time.now # -> 2020-03-15 15:00:00 +0000
pp DateTime.now #

元記事を表示

Railsの慣習まとめ

# Railsの慣習まとめ
1. Controllerの名前は複数形にする
resources, resourceを使うときでも複数形にすることが推奨されています[¹](https://guides.rubyonrails.org/action_controller_overview.html#controller-naming-convention)

2. Modelの名前は名詞にする
– *単数*のクラスが作成される
– table名は*複数形*のスネークケース
– factoryは*複数形*のスネークケース

3. Polomorphicの関連を作成する場合、columnには -able_type, -able_idにする[²](https://guides.rubyonrails.org/association_basics.html#polymorphic-associations)

4. concerning は-ing系[³](https://github.com/rails/rails/blob/master/activesupport/

元記事を表示

Railsポートフォリオ環境構築備忘メモ(参考にした記事とか)

※こちらは活動報告を兼ねた備忘メモです。参考にした記事はURLを記載していますが、本記事自体にはまとまったTIPS的な情報はないので開いてしまった方はお手数ですがスルーしてください。

#Railsポートフォリオ環境構築備忘メモ
繁忙期深夜と休日を使い悶々としながら行っていた環境構築が一旦完了した。
環境構築で行った手順を忘れてしまいそうのでメモしておく。

前提条件(バージョン)
Ruby 2.7.0
Rails 5.2.4.1
MySQL 5.7
をDocker、docker-composeを使用して環境構築する。

参考にした記事:
①***丁寧すぎるDocker-composeによるrails5 + MySQL on Dockerの環境構築(Docker for Mac)***
https://qiita.com/azul915/items/5b7063cbc80192343fc0
本当に丁寧。こちらを基本にしてRails.new前の各種ファイルを作成。バージョンと一部内容は変更した。
(自分なりに理解してやりたかったのだが、自分のにわか変更によりハマりまくった…)

②***

元記事を表示

Ruby, Rails たまに使うけどすぐ忘れるやつ

RailsとかRubyの過去に学んだものを適当に残しておく(最近はRailsもRubyも触ってない・・)
思い出したら随時追加する。

# rakeタスクをrails consoleから実行する

“`ruby
require ‘rake’
Rails.application.load_tasks
Rake::Task[‘hoge:huga’].execute
# 引数つけて実行
Rake::Task[“hoge:huga”].execute({ hogege: ‘hugaga’ })
“`

# bundle でバージョン指定してインストール

“`bash
# bundle installするときはGemfile.lockのバージョンを確認してから実行
bundle _1.16.1_ install
“`

# rakeタスク内のメソッドはObjectクラス直下に作られちゃう

https://blog.freedom-man.com/rake-definemethod-namespace

namespace配下にメソッド書いていると思っていてもObjectクラス以下に

元記事を表示

多対多

##多対多
『Instagram』を例とします。『Instagram』はひとつの写真に複数のタグ付けができます。こうしたタグ付け機能を実現するには3つのテーブルが必要です。タグを保存するテーブル、写真を保存するテーブル、そして「どの写真にどのタグが登録されているか」を保存するテーブルです。
このうち写真やタグを保存するテーブルの名前はそのままtagsテーブル、photosテーブルとします。「どの写真にどのタグが登録されているか」のテーブルは、慣習的にphotos_tagsテーブル、と名付けます。関係する2つのテーブルをアンダーバーでくっつけています。
例ですがそれぞれのテーブルに保存されているレコードの関係性は以下のようにしたとします。

| tagsテーブル |photosテーブル| photos_tagsテーブル |
|:—————–|——————:|:——————:|
| id | id | id |
|

元記事を表示

マイクロポストにタグ付けする

#はじめに
ご訪問いただきありがとうございます。レベル的にはrailsチュートリアルを終えたくらいのレベルです。もし間違えているところ等あればアドバイスいただけると幸いです。

###作るもの
今回はマイクロポストに自由にタグ付けと編集の機能を追加します。
(題材は自分のポートフォリオサイトです。尚、すでにUserテーブルとMicropostテーブルは作成済みです。)

###対象読者
railsチュートリアルに機能を追加したい等自分と同じ位のレベルの人を対象としています。

#作成の流れ
1.TagモデルとTag_relationshipモデルの作成
2.モデルの関連付けとバリテーション
3.対応するビューの作成
4.コントローラーのアクション作成
5.タグ編集機能の作成

#1.TagモデルとTag_relationshipモデルの作成
今回はタグ付機能を作ります。マイクロポストから見ると一つのポストに一つ以上のタグをつけることができる。タグから見ると一つのタグは一つ以上のマイクロポストに関連づくということになります。つまり多対多の関連付けとなり、MicropostもでるとTagモ

元記事を表示

【Rails6・楽天API】商品検索機能の実装手順

#はじめに
Railsで楽天APIを使用して商品(本)の検索、商品情報の取得・表示をする方法をまとめました。
今回は、本を題名で検索し、ヒットした本の情報を一覧にして下に表示する形です。

#バージョン
・Ruby 2.7.0
・Rails 6.0.2.1

#実装手順

##アプリケーションIDの取得
楽天API情報を使用するには、[Rakuten Developers](https://webservice.rakuten.co.jp)より
「新規アプリ登録」を行いアプリケーションIDを取得する必要があります。
簡単な情報を入力してすぐに取得することができます。
AmazonAPIは申請を行い審査を受ける(落ちることも多いようです)ので、この点が違いますね。

##gemをインストール
[Ruby SDK(公式)](https://webservice.rakuten.co.jp/sdk/ruby.html)に従って進めます。
Gemfileに下記追記して、`bundle`でインストール。

“`ruby:Gemfile
gem ‘rakuten_web_service’

元記事を表示

Railsでhamlファイルに動画を埋めこむ

今回はhamlファイル内に動画を埋め込む方法をご紹介します!
背景に動画を流したいときにオススメです。

## publicフォルダにvideosフォルダを作成

## 上記で作成したフォルダ内にあらかじめ用意した動画ファイルを保存

今回は拡張子mp4のファイル、sample.mp4を用います。

## hamlファイルに以下を記述

“`○○.html.haml
= video_tag(“/videos/sample.mp4”, autoplay: true, loop: true, muted: true, class: ‘content__box__video’)
“`

#### video_tag
ビデオタグを用いて動画ファイルを呼び出します。

#### /videos/sample.mp4
参照先のフォルダを指定します。
publicフォルダは指定する必要ありません。

#### autoplay: true
ページ更新時に自動再生されます。

#### loop: true
繰り返し再生になります。

#### muted: true
無音になります。

###

元記事を表示

【1日目】初学者の今日の学び ストロングパラメータ, fontawesomeについて

【1日目】プログラミング初学者の今日の学び
プログラミング初学者が、ポートフォリオを作っている中で得た気づきを書いていきます。

# Fontawesomeをhtml.erbのループ内で使う

Microposts一覧表示ページにおいて、各micropostを削除するボタンを、Fontawesomeのゴミ箱アイコンで表現したかった。
埋め込みrubyの繰り返し内でhtmlタグを使いたい時は、ブロックを受け渡せば良いらしい。

“`ruby:app/views/microposts/_micropost.html.erb
<% @microposts.each do |micropost| %>

<%= link_to micropost.name, "#" %>
<%= link_to micropost_path(micropost), :method => :delete do %>

<% end %>

<% end %>
“`

元記事を表示

【Rails】where

#whereメソッド
与えられた条件に対して合っていたレコードを全て返す。

“`rb
#titleが「test」にマッチするレコードを全て取得
Book.where(title: “test”)
=> [#,
#]
“`

元記事を表示

Railsアプリをcloneした後にDocker上で動かすまで

GitHubからソースをcloneした後、Dockerを使った開発環境を構築するまでにやることをまとめます。
`Dockerfile`や`docker-compose.yml`はすでにあるものとします。

##git管理外の必要なファイルを作成
– `database.yml`
– `.rspec`
– `.env`
– `master.key`
– `node_modules`

などのファイルを必要に応じて作成

##ビルド
Dockerfileを元にDockerイメージを作成します

“`terminal
$ docker-compose build
“`

##コンテナを立ち上げる
“`terminal
$ docker-compose up -d
“`

##データベースを作成
“`terminal
$ docker-compose exec <サービス名> /bin/bash
$ rails db:create
$ rails db:migrate
$ rails db:seed
“`
ここでブラウザにアクセスして、表示を確認しましょう。

##DBクライアント

元記事を表示

form_withの記述

##form_with
form_tagとform_forというのもあるのですが、Rails 5.1系以降ではform_withが推奨されています。
自動でパスを選択してくれて、HTTPメソッドを指定する必要がありません。
コントローラーから渡された、ActiveRecordを継承するモデルのインスタンスが利用できます。
inputタグは入りません。
これらの特徴はform_forとform_withの共通する部分です。
##そもそもform_tagとform_forとは
簡単にいうとモデルの有無です。例えば検索機能の場合はモデルが必要ないのでform_tagを使います。
【例】form_tag

“`
<%= form_tag('XXXX_path', method: :post) do %>
(中身)
<% end %>
““
上記みたいにパスを指定したりします。まだいろいろと記述の仕方はあるのですが今回はform_withなので省きます。
【例】form_for

“`
%= form_for @XXXX do |form| %>
(中身)
<% end %>

元記事を表示

【Rails】time_ago_in_words(ヘルパーメソッド)

#time_ago_in_words
Railsのヘルパーメソッドの一つで、投稿機能で「○分前に投稿」等の表示をさせるために使用されます。

##実行例
“`rb

Posted <%= time_ago_in_words(micropost.created_at) %> ago.

“`
このようなコードの場合、投稿時間が5時間前だと`Posted about 5 hours ago.`と表示されます。

元記事を表示

Rails~パスワードの取り扱いについて~

#パスワードの取り扱い
パスワード機能がついているSNSアプリやサービスにはデータベースにパスワードが保存されている。このままだとPCを覗き見されたりハッキングでデータを盗まれた場合そのパスワードを使って他人のアカウントに不正にログインできてしまう。そのため万が一パスワードを覗き見されたりデータを盗まれてもパスワードの内容がわからない状態を目標とする。
#gemファイルを使用しパスワードを暗号化する。
##gemとは
gemとはRubyやRailsでプログラミングをする際に「よく使う機能」をパッケージ化したもの。「検索機能を作るgem」や「暗号化するためのgem」など様々なgemが存在し、Railsにインストールすることで使用することができる。
今回使用するgem= bcrypt(暗号化)するためのgem

#gemfiles
Railsにはインストールしたいgemを記述するGemfileというファイルが存在する。
「gem ‘rails’,’5.0.3’」等と記載する。「rails new」コマンドで生成されたgemfileにはすでにいくつかのgemが書かれてインストールされている。

元記事を表示

Rails 6 Grapeを利用したAPI作成、Swaggerでの確認 続編

# メモ続編 もう少しAPIらしくしてみる
[前回](https://qiita.com/katafuchix/items/eceafb5788a9ec60c3dd)
JSONのヘッダに こんなのをつけてみる

“`
result: true,
message: “取得しました”,
“`

“`config/initializers/locale.rb
Rails.application.config.i18n.default_locale = :ja
“`
“`config/locales/api.yml
ja:
api:
success_message:
get: 取得しました
create: 作成しました
update: 更新しました
delete: 削除しました
“`

“`app/views/api/v1/task_displays/index.jbuilder
json.result true
json.message I18n.t(‘api.success_message.get’)
json.ta

元記事を表示

Rails ~いいね機能を作る~

#テーブルの作成
モデルとマイグレーションファイルの作成を準備する。今回作成するテーブルにはuser_idとpost_idの2つのデータをもたせるように処理を行う。
STEP1 マイグレーションファイルを作成
STEP2 マイグレーションファイルの内容をデータベースに反映させる
#ターミナル
“`
マイグレーションファイルの作成
rails g model Like user_id:integer post_id:integer
データベースに変更を反映。データ名:integerでデータ作成
rails db:migrate

“`
#バリデーションの追加
“`
class LIKE like=Like.new(user_id:1,post_id:2)
IDが

元記事を表示

OTHERカテゴリの最新記事