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

Rails関連のことを調べてみた2021年06月22日
目次

【Rails】Rubocopの導入

# 目的
Railsで作成したアプリに`Rubocop`を導入する。

# 開発環境
macOS: *Big Sur*
Rubyバージョン: *2.6.5*
Railsバージョン: *6.0.0*

# 前提

– `アプリ`が作成されている。
[【Rails】簡単な投稿アプリの作成](https://qiita.com/oak1331/items/18a4f3a3386aab0fa354)

# 手順

1. [はじめに](#はじめに)
1. [Rubocopの導入](#rubocopの導入)
1. [Rubocop設定ファイルの作成](#rubocop設定ファイルの作成)
1. [Rubocopの設定](#rubocopの設定)
1. [Rubocopの実行](#rubocopの実行)

# はじめに

今回は`Rubocop`の導入を行っていきます。
`Rubocop`とはRubyの静的コード解析ツールのことです。
「インデントが揃っていない」「余分な改行・スペースがある」などの指摘を行ってくれるため、コードの品質を保つことができます。

# Rubocopの導入

それでは早速

元記事を表示

【Rails】プルダウンで投稿の公開範囲を設定する方法

#イメージ

#はじめに

自分のみ閲覧できるように投稿したい!公開、非公開等投稿の公開範囲を設定したい!!!
と思った時に、該当する記事が見つからない!!!!!不便だなと思ったので、ここにまとめておきます。

#環境
この記事では以下の環境(2021年6月22日時点)で実装できました。

Ruby: 2.6.6
Rails: 6.0.3

#つけていないといけない機能
①ログイン機能
②投稿機能

#実装

既に作成したテーブルに新しくカラムを追加する場合は
カラムを追加するマイグレーションファイルを作成する。

「rails g migration クラス名 カラム名:データ型」でコマンドを実行する。

例)tweetテーブルにprivacyカラムを追加する場合

“`
$rails g migration AddPrivacyToTweets privacy:string
“`

コントローラーにカラム名を追加する。
例):privacy

“`ruby:tweets_controller.rb
private
def tweet_params
p

元記事を表示

vscodeで{}ブロックを自動フォーマットして困った話

#はじめに
RSpecの勉強中に{}ブロックが`do…end`に変換されてしまって困った。その時の対処についてです。

#症状
“`rspec
it “does not delete the project” do
sign_in @user
expect do #ココ
delete :destory, params: { id: @project.id }
end.to_not change(project, :count) #ココ
end
“`
上記のコードを記述すると、画面遷移時に`expect{}`と書いた部分が`expect dd…end`となってRSpecを走らせることができなかった。

#結論
`Rubocop`のチェック対象から外して、とりあえず解決した。

#Rubocopのチェック対象から外す

“`.rubocop.yml
# 下記ファイルはチェックの対象から外す
Exclude:
– “Rakefile”
– “spec/rails_helper.rb”
– “spec/spec_helper.rb”

元記事を表示

[Ruby]Arrayメソッド fromとto の使い方

## はじめに
Railsで使えるArrayメソッドの`from`と`to`を使用したので備忘録として残しておきます。

## 使い方

#### 1. from
`from`は引数に指定した位置から配列の最後までの要素を配列として返します。

“`
[0,1,2,3].from(2)
=> [2,3]
“`

#### 2. to
`to`は引数に指定した位置まで要素を配列として返します。

“`
[0,1,2,3].to(2)
=> [0,1,2]
“`

元記事を表示

Docker上のRailsのActiveStorageでActiveStorage::IntegrityErrorが出る

# 背景
私は普段Railsのアプリ開発でDockerではなくローカル上のrbenvから起動しているので遭遇しなかったのですが、最近フロントの業務委託の方からセットアップ時に `ActiveStorage::IntegrityError` が出て作業が進められないという連絡があり、調査することになりました。

# 原因
`Rails ActiveStorage IntegerityError Docker` といったワードで検索したところ、まず最初に[こちら](https://scrapbox.io/ohbarye/ActiveStorage::IntegrityError_on_Docker_for_Mac_3.3.0)のサイトが見つかりました。ここにあるgithubのissueを見たところ、どうも原因はDocker for Macのバグ?ということでした。

# (一時的な)解決方法
いくつかあったのですが、手っ取り早い方法をいくつか

### 1. Docker for Macのダウングレード
先程のサイトにもあるように、とりあえずDocker for Macを3.2.2にダウン

元記事を表示

webpackerでBootstrap4の導入

# 初めに
Railsでwebpackerを使ってBootstrap4の導入方法のまとめ。
# 導入手順
1. Gemfileにwebpackerを追加して、インストール
(今回は既に入っていたので、飛ばしてます。)
“`Gemfile
gem ‘webpacker’, ‘~> 3.5
“`
2. bundle installの実行
3. Webpackerをプロジェクトにインストール
 `bundle exec rails webpacker:install`
これでWebpackerを実行するための各種ファイルが生成。
4. app/javascript以下にsrcというディレクトリを作成し、application.scssを作成。
ディレクトリはapp/javascript/src/application.scssとなる。
4. Bootstrapの導入
`yarn add bootstrap@4.3.1 jquery popper.js`を実行
5. BootstrapのJSをapp/javascript/packs/application.jsで、
C

元記事を表示

Carrierwaveの実装 

## はじめに
画像登録の実装の際に、carrierwaveを用いて実装しました。
その時に調べたこと感じたことの記録です。
## 結論
実装自体は単純で、使い勝手が良い。
ドラッグ&ドロップなどにも対応可能。
## 手順
### 1. インストール
ターミナル上で以下のコードを実行し、最新版のcarrierwaveをインストール
`$ gem install carrierwave`
Gemfile内に以下を追加
`gem ‘carrierwave’, ‘~> 2.0’`
### 2. 実装
1. `uploader`の実装
以下のコードを実行して、`uploader`を実装する。
“`terminal
$ bundle exec rails generate uploader ###
“`
`###`の部分は`image`や`avator`など、その時のカラムに合わせて変えてください。
そうすると
“`
app/uploaders/###_uploader.rb
“`
というファイルが作成されている。
中身は「保存先の指定」「アップロードする画像の種類」などの指定ができる。

元記事を表示

1人目が2人目をフォローする、2人目が3人目をフォローする… の様なズレと組み合わせを生成するアルゴリズム[Ruby](zip, rotate)

1人目のユーザーが2人目のユーザーをフォローする。
2人目のユーザーが3人目のユーザーをフォローする。…など、
少しずれた関係性を生み出す際に利用可能なアルゴリズムを考えついたのでここで共有します。
2つのメソッドを組み合わせる事で、生成することが可能です。

## 結論

“`ruby
users = User.all
users.zip(users.rotate) do |following_user, followerd_user|
following_user.follow(followerd_user)
end

省略形
User.all.zip(User.all.rotate) { _1.follow(_2) }
“`

恐らくこれで動作すると思います!`follow`というtwitterなどで用いられる関係性を生み出す独自メソッドです。省略形はruby2.7以降で動作すると思います!

### rotate メソッド

https://docs.ruby-lang.org/ja/3.0.0/method/Array/i/rotate.html

“`ruby

元記事を表示

Rails Tutorialをローカル環境で始めるためのセットアップ例-for windows10

初投稿です。
普段はJavascriptを中心にフロントエンドの勉強をしているのですが、Web開発について体系的に勉強していきたいなと思い、Rails Tutorialをやってみることにしました。ボリューム感もお手頃だし。

## はじめに

Rails Tutorialの第6版-1章ではAWSのCloud9(クラウドIDE)を用いた実行環境のセットアップが紹介されており、ややこしい環境構築をすっ飛ばしてすぐに学習が始められるよう配慮がなされています。(素晴らしい)
そのまま進めるのが安牌なのは分かっているのですが、変なところで凝り性な私は**「どうせやるならローカル環境でやりてえよ!!」**と思い、色々調べながら環境構築を進めました。

結論何とかなったのですが、案の定色々とハマってしまったので、これからローカル環境でRuby on rails(Rails Tutorial)を始めようとしている初学者の人~~(よしときゃいいのに)~~の一助になればと思い筆を執った次第です。

こんな記事を書いておいてなんですが、初学者の方にとってはかなり煩雑な作業になってくるかと思います(爆)**

元記事を表示

3桁区切りにする

数値の代入された変数や数値直接「.to_s(:delimited) 」を続けると3桁区切りになって表現されます

元記事を表示

date.todayで本日の日付を取得

Dateクラスにtodayで日付を扱えるようになります。

ただそのままデータを確認するとSat, 19 Jun 2021になるが、

day = Date.todayとして変数に代入すると「2021-6-19」という値がGETできます。

元記事を表示

Active Storageを使ってプロフィールに画像をつける

#はじめに

オリジナルアプリの新規登録の際に、画像を入力するフォームを追加して、プロフィールに画像が入れ込もうと思いました。

今回は**Active Storage**を使っていきたいと思います。

#Active Storageとは

ファイルアップロード機能を簡単に実装できるGemです。
Active Storageを使うと、画像などのファイルのアップロードを簡単にするメソッドが使用できたり、画像を保存するテーブルを簡単に作成できます。

#使用するツールたち

* **ImageMagick**

画像に処理を加えることができるツールです。
画像の作成やサイズ変更、保存形式の変更などがあります。

Railsでは単体で使用する事はできず、MiniMagickというgemが必要です。

* **MiniMagick**

ImageMagickの機能をRubyで扱えるようにしてくれるGemです。
RailsでImageMagickを扱うために必要となります。

* **ImageProcessing**

MiniMagickでは提供できない、画像サイズを調整する機能を提供す

元記事を表示

【Rails】リアルタイムチャット機能実装(Action Cable)2/3

# 目的
Railsで作成したアプリに、`Action Cable`を用いてリアルタイムチャット機能を導入する。

# 開発環境
macOS: *Big Sur*
Rubyバージョン: *2.6.5*
Railsバージョン: *6.0.0*

# 前提

– アプリの下準備としてチャット機能実装が実装されている。
[【Rails】リアルタイムチャット機能実装(Action Cable)1/3](https://qiita.com/oak1331/items/1c938ce389f5ea9cbf9a)

# 手順

1. [はじめに](#はじめに)
1. [channelの作成](#channelの作成)
1. [message_channel.rbの編集](#message_channelrbの編集)
1. [コントローラーの編集](#コントローラーの編集)
1. [message_channel.jsの編集](#message_channeljsの編集)

# はじめに

前回に引き続き、`Action Cable`を用いての実装を行っていきます。
そもそも`Action Cable

元記事を表示

【未経験】プログラミング歴4ヶ月でデプロイしたApp

初めに

はじめまして、今回初めてQiitaに投稿します、るんるんです。
普段は都内の大学に通う学生ですが、今年の冬にプログラミングの勉強を開始しました。

何かオリジナルのWebアプリケーションを作成したいと思っていた矢先、友人から「*就活に必要な自己分析がなかなか始められない*」との相談をキッカケに*自己分析をサポートする*[freamwork.app](https://freamworkapp.herokuapp.com/)を開発しました。![freamworkapp.headnail.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1035524/0b3b588d-4d94-1c48-0f49-07f6993ea8d6.png)

採用言語・採用理由

フロントエンド

HTML,CSS(Sass),jQuery

→フロントエンドは流行りのVueやReactなどを採用したかったが、技術不足であり今回は断念。

バックエンド

元記事を表示

ERROR: Couldn’t connect to Docker daemon at http+docker://localhost – is it running? If it’s at a non-standard location, specify the URL with the DOCKER_HOST environment variable.

“`
sudo docker-compose run web rails new . –force –no-deps –database=postgresql –skip-bundle
“`

コンテナを作成しようとしたところ、以下のエラーが発生しました。

“`
ERROR: Couldn’t connect to Docker daemon at http+docker://localhost – is it running?

If it’s at a non-standard location, specify the URL with the DOCKER_HOST environment variable.
“`

#原因

結論から申し上げますと、今回の場合はdockerのサービスを開始していなかったのが原因でした。

#解決策

“`
sudo systemctl start docker
“`
を行ない、docker サービスを起動させ、再度

“`
sudo docker-compose run web rails new . –for

元記事を表示

[Ruby on Rails] jscrollを使って無限スクロール

#完成GIF動画
![jscroll.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1410684/8df271ee-890f-0edf-6b9c-85f22075dc12.gif)

#1.gem導入

“`csharp:ターミナル
gem ‘kaminari’
gem ‘jquery-rails’

$ bundle install
“`

#2.jscrollのHPを確認

**jscroll公式サイトが以下になります。**
https://jscroll.com/#/

デバックの方法なども書いてあるので、一度確認しておいた方がいいです。

githubから`jquery.jscroll.min.js`をダウンロードして`assets/javascripts`直下に入れます。

[code]クリック → [Download Zip]クリック

https://github.com/pklauzinski/jscroll/tree/master

#3.jqueryを使用できるようにす

元記事を表示

【Rails】devise_token_authのUnpermitted parameter: :registrationの対処法

症状

devise_token_authを適用したユーザーの登録やアップデートをしようとしたとき、下記エラーが発生しました。
翻訳すると「許可されていないパラメータ::登録」でした。registorationが登録されていないようです。

“`terminal:エラーv
Unpermitted parameter: :registration
“`

該当のRegistorationファイルです。

“`ruby:RegistrationsController.rb
class Api::V1::Auth::RegistrationsController < DeviseTokenAuth::RegistrationsController private def sign_up_params params.permit(:name,:email, :img, :password, :password_confirmation,:address) end def account_update_pa

元記事を表示

railsチュートリアル 第5章

####テスト駆動開発
エラー

“`
undefined local variable or method `static_pages_contact_url’
“`
`static_pages_contact_url’にアクセスしようとしたけれどアクセスできない

ルーティングを直す。

“`
ActionNotFound: The action ‘contact’ could not be found for StaticPagesController
“`
StaticPagesControllerの中にcontactアクションがない
controllerを直す。

“`
ActionController::MissingExactTemplate: StaticPagesController#contact is missing a template for request formats
“`
contactアクションまで動いているが、contactのテンプレートを探しているけどない。

Viewを直す。

“`

元記事を表示

【備忘録】【Rails】provideとyieldの関係

viewでprovideヘルパーを利用することで、ここのテンプレートからレイアウト側にタイトルを引き渡すことができる。

“`ruby:app/views/devise/registrations/new.html.erb
<% provide(:title, "新規登録") %>

新規登録

<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
<%= render "devise/shared/error_messages", resource: resource %>

<%= f.label :email %>
<%= f.email_field :email, autofocus: true, autocomplete: "email" %>
元記事を表示

herokuデプロイ後のエラー uninitialized constant ApplicationCable::ActionCable (NameError)

やっとherokuにデプロイできたのに

数々のエラーを解決してやっとの思いでherokuへデプロイ後
uninitialized constant ApplicationCable::ActionCable (NameError)
こんなエラーメッセージが出てきたので解決方法を書き留めておきます。

heroku openするとエラー画面が

![スクリーンショット 2021-06-20 18.54.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1194218/5d4b280f-14d2-4f76-aa33-ba7c27e56b1d.png)
ここに書いてあることを簡単に訳すと
「アプリケーションでエラーが出たので、次のコマンドでログを確認してください。」ということです。

“`
$ heroku logs –tail
“`

ちなみに翻訳はこちらのDeepLがおすすめです!

元記事を表示

OTHERカテゴリの最新記事