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

Rails関連のことを調べてみた2020年09月23日
目次

任意の場所から文字を取り出せるメソッド作成

【概要】
—————————————-
1.結論

2.どのように記載するか

3.ここから学んだこと

1.結論
—————————————-
lengthメソッドとsliceメソッドを使用する!

2.どのように記載するか
—————————————-

“`ruby
def srt_search(strings)
character_number = strings.length #—❶
character_reslut = strings.slice(character_number – 3, 3) #—❷
end
“`
上記のように記述しました!

❶lengthで、文字列を数に変更しました。
>ex)”Goodjob”➡︎”8″文字に変換

❷今回は最後から3番目までの数字が欲しいので❶の文字数からslice(character_n

元記事を表示

Rails 6で認証認可入り掲示板APIを構築する #18・終 user controllerの実装

←[Rails 6で認証認可入り掲示板APIを構築する #17 管理者権限の追加](https://qiita.com/rf_p/items/bdaeab765d55ef924d02)

全18回に渡る連載も今回で終了です。

今回はuser controllerを作ります。
今までの集大成なので、例示するコードを見ずに作ってみることをオススメします。

# 仕様

主に管理者がユーザー管理をする用途と、ユーザーが自分自身の更新削除をするための機能群として想定しています。

* #index 管理者のみ閲覧可能
* #show 自分自身か管理者のみ閲覧可能
* #create 管理者のみ作成可能
* #update 自分自身か管理者のみ更新可能
* #destroy 管理者のみ削除可能

# 手順

1. users_controllerの作成
2. user_policyの作成
3. user_policyテストの実装
4. user_policyの実装
5. users_controllerテストの実装
6. users_controllerの実装

という手順で進めてみます。

元記事を表示

Docker開発環境でCapybaraを使ったブラウザテスト環境を構築する

##概要
docker開発環境でRSpecテスト環境を構築するやり方をまとめました。
初心者で独学なので間違っている部分やもっといいやり方があると思いますが、その時はご指摘頂けると嬉しいです。

以下の記事を参考にしました。
[Rails on DockerでRSpecのSystem testをSelenium Dockerを使ってやってみた。](https://qiita.com/at-946/items/e96eaf3f91a39d180eb3)

##はじめに
以前、[Dockerを使ったRails開発でブラウザテストが実行できない](https://qiita.com/na-tsune/items/05b00970cb733a893ce3)でブラウザテストのエラー解消の記事を投稿しましたが、
コメントを頂き、docker-composeを使ってchrome自体をサービスの一つとして動かせば、
Rails環境を汚さずに簡単にテストができるとアドバイスを頂きましたので試してみました。
ご指摘ありがとうございました!

##1.docker-compose.ymlにchromeのサー

元記事を表示

Ruby on Rails 環境構築(Windows10)で苦労したこと(SQLite3)

Railsのインストールがやっとできました。
苦労した点1つめをまとめます。

RubyとRailsをインストール後
Railsアプリを新規作成したところ、こんな感じのエラーがたくさんでました。

“`
エラー: mingw32: キー “AD351C50AE085775EB59333B5F92EFC1A47D45A1” は不明です
・・・
エラー: データベース ‘mingw64’ は無効です (無効または破損したデータベース (PGP
鍵))
“`

Gemfileで
`gem ‘sqlite3’, ‘~> 1.4’`
となっていたので
いろいろ修正してみたけれどだめ。

そこで
sqlite.dllをRubyのbinへ配置
node.jsのインストール
yarnのインストール
を行い

“`
gem install sqlite3
“`
を実施。それでもエラーが出てしまい・・
エラー内容をよく見てみると、こんな記述が・・

“`
checking for sqlite3.h… no
sqlite3.h is missing. Install SQLite3 from

元記事を表示

本番環境で画像が表示されない

##デプロイ後画像が表示されなくて困ったのでまとめてみました。

どなたかのお役に立てたら嬉しいです。

ruby ‘2.6.5’
rails ’6.0.0′

オリジナルアプリケーションを作っています。

本番環境はHerokuを使用します。
Herokuにデプロイして動作確認したらエラーログの出現しました。

![12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674511/2d2f915b-8904-617e-3329-1464ee669f4e.png)

エラーログから本番環境ですと画像へのパスが変わってしまうのが原因と考えました。

ローカルだとassets/images/直下におけばそのまま表示されますが
本番環境だとプリコンパイルされ表示されない為エラーになりました。

調べると、
`productionでは、Railsはプリコンパイルされたファイルをpublic/assetsに置きます。プリコンパイルされたファイルは、Webサーバーによって静的なアセットとして扱われます。
app

元記事を表示

(ギリ)20代の地方公務員がRailsチュートリアルに取り組みます【第13章】

##前提
・Railsチュートリアルは第4版
・今回の学習は3周目(9章以降は2周目)
・著者はProgate一通りやったぐらいの初学者
##基本方針
・読んだら分かることは端折る。
・意味がわからない用語は調べてまとめる(記事最下段・用語集)。
・理解できない内容を掘り下げる。
・演習はすべて取り組む。
・コードコピペは極力しない。

 
 さてさて第13章。早いもので残り2章となりました。今回はマイクロポストというユーザーのメッセージ投稿機能を実装していきます。要はTwitterよね。気張っていきましょう!!
 
本日のBGMはこちら。
[ARIA vocal collection](https://www.youtube.com/watch?v=pRCE8KYkmWc)
ネオ・ヴェネツィアでカフェラテ飲みながらリモートワークできる時代が来ねえかなあ…

 
####【13.1.1 Micropostモデル 演習】
1. RailsコンソールでMicropost.newを実行し、インスタンスを変数micropostに代入してください。その後、user_idに最初のユーザーのidを、

元記事を表示

【Rails】カラムの追加

1. カラムの追加
2. カラムの削除

#カラムの追加
テンプレートは下記です。

“`
rails g migration Addカラム名Toテーブル名 カラム名:型名
“`

実際にテーブルにカラムを追加する際の一例を記載いたします
ターミナルを開き下記のものを記述いたします。

“`
rails g migration AddNameToLists name:string
“`
Lists(テーブル)にstring型のNameカラムを追加することになります。
最後は下記で更新。

“`
rails db:migrate
“`

これで\db\migrateに新しいマグレーションファイルが格納されているはずです。

#カラムの削除
テンプレートは下記です。

“`
rails g migration Removeカラム名Fromテーブル名 カラム名:型名
“`

実際にカラムを削除する際の一例を記載いたします
ターミナルを開き下記のものを記述いたします。

“`
rails g migration RemoveNameFromLists name:stri

元記事を表示

【AWS】Amazon SESを用いてRuby on Railsのdeviseでメールを送信する

# 目次
・経緯
・今回の前提条件
・注意事項
・AWS SES(Simple Email Service)とは
・料金
・大体の流れ(イメージ)
・1. AWS SESの設定
・2. AWSのCSに制限解除のメールを送る
・3. IAMユーザーの設定
・4. railsに設定
・用語解説
・最後に

## 経緯
私が***[Portfolio](https://notepro.work/)***を作成している段階でして、divise上のメールが飛んでいないことに気づきました。
改善策を模索している中、AWSSES(有料)なるものを見つけGmail(無料?)でも実装できることが分かったが、AWSでEC2なども利用していたので
・AWSでまとめて管理ができるのですっきりしそう
・いい経験になるかも
上記の理由で実装してみた。

***私自身も初学者なので、完全に鵜呑みにせずイメージをつかむ感覚で読んでいただければと!***

## 今回の前提条件
– Ruby on railsでappがありdeviseを導入している
– AWSのアカウントを所持している
– Route53の設定が完了し

元記事を表示

テーブルのデータ型とコマンドについての備忘録(Rails)

#はじめに
テーブルを作る際、この場合データ型なんだったっけ?コマンドなんだったっけ?と調べ直してしまうことがままあるのでまとめることにしました。

#データ型

| データ型 | 種類 |
|:———–|————————:|
| integer | 数値(整数) |
| decimal | 数値(精度の高い小数) |
| float | 数値(浮動小数) |
| string | 文字(短い文字列) |
| text | 文字(長い文字列 |
| date | 日付 |
| datetime | 日時 |
| time | 時刻 |
| timestamp | タイムスタンプ |
| binary | バイナリ |
|

元記事を表示

投稿に対していいね機能を実装する

#概要
今回、twitterのような投稿アプリに対して
いいねを押したり、取り消したりできる機能と、
いいねをカウントして件数を表示できる機能と、
いいねするリンクをハートにする実装についてまとめておきます。

ちなみに、投稿にいいねをする機能に関しては、progateにカリキュラムがありますが、自分はそのまま実装しても思うような機能にならなかったので、qiitaをはじめとするサイトをたくさん検索しました。

それも踏まえてまとめようと思います。

#機能の見た目
![like-qiita.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696517/b20fc7a6-9e6b-4511-d025-cff0e95cf8fa.png)

#実装
####likeモデルを用意する

“`
rails g model like
“`

マイグレーションファイルに
t.references, foreign_key: trueとして、user_idとpost_idのカラムを設定します。

“`models

元記事を表示

[Rails6]devise + paranoia + MySQL8系で実現するユーザー論理削除と一意制約の両立

# はじめに
タイトルの環境にて、ユーザーの論理削除および一意制約の両立にかなり苦戦したので
解決方法を軽くまとめます。
deviseの一意制約をオーバーライドして独自の制約を持たせる方法などが出ていましたが
どれも面倒でもっと簡単にできないかと思い調べた結果です。

# やりたいこと
先の環境にて(特にMySQL)、deviseデフォルトのユーザー物理削除ではなく論理削除を行い、
かつ退会したユーザーが同じアドレスやIDで再登録できるよう一意制約を担保したい。

### PostgreSQL, SQLite
こちら2つのDBでは部分indexを活用することで簡単に実装できるそうです。
[・実装記事](https://qiita.com/QUANON/items/40f21e9f697221d03e60)
[・add_index仕様1](https://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/add_index)
[・add_index仕様2](https://railsdoc.com/mig

元記事を表示

【Jenkinsとは?】インストール〜使い方〜自動テスト・自動デプロイまで世界一分かりやすく解説します

## 本記事を作成することになったきっかけ
フリーランスエンジニアとしてJenkinsを利用した案件に参画中なのですが、勉強がてらQiita記事にして知見を広めよう!ということで、書くことにしました。
また、この記事は書きかけですが、随時更新予定です。
https://www.udemy.com/course/jenkins-from-zero-to-hero/learn/lecture/19367702
のudemyの動画で学びつつ、調べながら記述しているので、間違いがあれば指摘いただけると大変嬉しいです。

## 対象の読者
仕事でJenkinsを使うことになったが使い方がさっぱり分からない人
Jenkinsってなに?って人
mac利用者

## Jenkinsとは?
CIツールです

## CIツールとは?
CIはContinuous Integrationの略で、直訳すると継続的統合です。
継続的インテグレーションと呼ばれたりもします。基本情報処理技術者試験を受けたことがある人は、ワードだけは見たことがあるかも知れませんね。

最近よく見るようになったCircleCIも、CIツ

元記事を表示

Ruby on Railsにて、Blocked Host:”ホスト名”が出てしまう時の対処法

#背景
Ruby on Railsチュートリアルの1章の演習で、ずっと「Blocked Host:自分のホスト名」というエラーが出てしまい、長時間色々なことを試した結果、ある根本的なことをしていなかったことに気づき解決できたため、この投稿をさせてもらいました。

#試したこと
Web上でよく書かれていることとしては、
1.environment/development.rbにて、「config.hosts.clear」を入れることです。
しかし、これを試しても、エラーが発生したままでした。
2.environment/development.rbにて「config.hosts<<"自分のホスト名"」を入れることです。 しかし、これを試しても、またしてもエラーが発生したままでした。 #原因 (Ⅰ).違うアプリケーションの中の、development.rbに1と2のプログラムを追加していた。 例えば、自分が作っているアプリケーションがhello_appだとすると、違うアプリケーション(例えば、a_app)の中のdevelopment.rbに1と2のプログラムを追加していたということです。

元記事を表示

めっちゃ便利なRubyのStructクラスのお話

# きっかけ
[とちぎRuby会議09](http://regional.rubykaigi.org/tochigi09/)にリモートで参加し、そこで見たLTに[今更聞けない! Struct の使い方と今後の可能性について](https://speakerdeck.com/osyo/jin-geng-wen-kenai-struct-falseshi-ifang-tojin-hou-falseke-neng-xing-nituite)でRubyのStructクラスについて初めて知った。
なにこれめっちゃ便利じゃん!となったので啓蒙も兼ねて記事を書こう、となったのがきっかけ。
Rubyはかれこれ休み休み10年間は触っているけれど未だに発見がある。素敵!~~学んでいないだけでは??~~

# Structクラスとは
[Ruby 2.7.0 リファレンスマニュアル Structクラス](https://docs.ruby-lang.org/ja/latest/class/Struct.html)

> 構造体クラス。Struct.new はこのクラスのサブクラスを新たに生成します。
> 個々

元記事を表示

Rails Tutorial 第14章 演習14.2.3.2 コメントアウトは2箇所しないとredにならない

##演習14.2.2.3 strongタグにIDを指定

ネットの他の方はrespons.bodyでassert_matchをしていました。私はstrongタグにIDを指定して、assert_selectを使っています。

“`ruby:test/integration/users_profile_test.rb
test “Home stat” do
log_in_as(@user)
get root_path
assert_select ‘strong#following’, @user.following.count.to_s
assert_select ‘strong#followers’, @user.followers.count.to_s
end
“`

“`ruby:ネットの他の方
assert_match @user.active_relationships.to_s, response.body
assert_match @user.passive_relationships.to_s, respo

元記事を表示

Rails gem Kaminariでページネーション機能を簡単に作る

ページネーション機能を簡単に作るための記述例です。
参考になりましたら幸いです。
また、間違いなどあればご指摘いただけますと幸いです。

なお、環境は
・macOS Catalina
・Ruby on Rails 6.0.3.3
です。

haml使ってます。erbやslim使ってる方は読み換えてください。
Bootstrap 4.4.1をyarnを利用してインストールしています。
jqueryもpopperも依存関係にあるので一緒にインストールしています。
(あくまで一例なので、別の方法でBootstrapを適用している場合はこの限りではありません)

“`
% yarn add bootstrap@4.4.1 jquery@3.5.1 popper.js@1.16.1
“`
Bootstrapの適用方法は省きます。

# 以下、記述例です
“`ruby:Gemfile
gem ‘kaminari’, ‘~> 1.2.0’
“`
“`terminal:ターミナル
% bundle install
% rails g kaminari:views bootstrap4

元記事を表示

【Rails】[第0回]分からないところを無視しないオリジナルサービス制作

#始めに

初めまして。名古屋在住のしんやです。転職で東京に行きたいです。
未経験からの転職のためにテックアカデミーのWebアプリケーションコースを受講し、2020年9月20日に受講終了しました。

僕としてはスクールのカリキュラムは非常に分かりやすく、サポート体制も整っていたので快適に学習を進めることができました。

元記事を表示

Rails 6で認証認可入り掲示板APIを構築する #17 管理者権限の追加

←[Rails 6で認証認可入り掲示板APIを構築する #16 policyの設定](https://qiita.com/rf_p/items/041e86fef26fb38fed5b)

# 管理者権限を用意する

前回までの実装で、投稿の編集や削除は投稿者本人だけできるようになりました。
ですがそこに拡張し、管理者としてログインしている時は誰の投稿でも編集・削除できるようにしてみます。

そのためにはuserモデルにadminカラムを追加しましょう。

“`powershell
$ rails g migration AddAdminToUsers admin:boolean
“`

“`rb:db/migrate/xxxxxxxxxxxxxx_add_admin_to_users.rb
# frozen_string_literal: true

class AddAdminToUsers < ActiveRecord::Migration[6.0] def change add_column :users, :admin, :boolean, default:

元記事を表示

railsアプリ の謎を解消してみた

#今日は既存のrailsアプリについて復習しました 
一度実装してみてから何だかよくわかりきっていない部分がありました、、、

#具体的にいうと、#
1.検索機能実装の仕組み

#です

ではまずはじめに検索機能に関する謎についてわかったことをまとめて行きたいとおもいます。

ポイント1
 たいていのアプリケーションにおける検索機能は、一つのデータを取得しようとしているわけではない。イメージしやすいのはインスタやツイッターなのである。

多くのアカウントがそれぞれデータベースに保存されている状況で、何億といるユーザーの情報をひっぱってきているわけだが、これらは常に含まれているワードに基づいて結果を出しています。

#つまり複数の情報をとってきているということ

railsのアプリケーションには7つのアクションがあります

index
new
create
show
edit
update
destroy
といった具合です。
しかし、searchアクションというのはありません。

そこで登場するののが
#colectionとmemberです

これら2つはかんたんに言うとアクショ

元記事を表示

剰余とべき乗(冪乗)の演算子

【概要】
—————————————-
1.結論

2.どのように使用するか

3.ここから学んだこと

1.結論
—————————————-
剰余:%
べき乗:**
を使う!

2.どのように使用するか
—————————————-
今回は2桁の整数(桁数制限するプログラムはしていません。)入力「の10の位と1の位を足した合計を求めています。

“`ruby:

def addition(a, b)
a + b
end

def calculation(num)
#10の位
no1 = (num / 10) % 10
#1の位
no2 = (num / 1) % 10
return no1,no2
end

puts ”2桁の整数を入力”
num = gets.to_i
a, b = calculation(num)
add_s

元記事を表示

OTHERカテゴリの最新記事