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

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

【CircleCI】GitHubへプッシュ時に自動デプロイする際の手順

今まで自動デプロイは「capistrano」を使用していましたが、毎回コードを修正するたびにローカルでmasterマージして、「bundle exec cap production deploy」を実行していました。

今回はcircleCIを使用し、masterマージされたら自動でサーバーへSSHしてコードをデプロイするように実装してみました。
以下、実装の際の流れや詰まった部分の解説をまとめていきます!

– 開発環境

– ruby : 2.5.1
– rails : 2.4.2.3
– circleCI : 2.1

※ dockerは今回使用していません。

# .circleci/config.ymlの設定
①最初にcircleCIで使うconfig.ymlの設定をローカルでしていきます。
circleCIの設定は、該当リポジトリのルート直下に.circleciと言うフォルダを作り、その中のconfig.ymlで行います。

– config.ymlに以下を追記。

“`config.yml
version: 2.1
orbs:
ruby: circleci/ru

元記事を表示

【質問】rails db:migrateを実行してDEPRECATION WARNING:エラーの解決方法

初めて質問させていただきます。
プログラミング初心者です。

バージョン:Rails 5.2.4.3

いいね機能を作成のためモデル名Favoritesを作成後
]$ rails db:migrateを実行したところ下記エラーが出ました

エラー文:
DEPRECATION WARNING:Passing the environment’s name as a regular argument is deprecated and will be removed in the next Rails version. Please, use the -e option instead. (called from at /home/vagrant/work/Bookers2-favorites/bin/rails:9)
config.eager_load is set to nil. Please update your config/environments/*.rb files accordingly:

* development – set i

元記事を表示

rails知識メモ[自動で読み込みされるもの]

##起動時に自動で読み込まれるもの
– Rails本体およびその設定(/config/配下)
– Gemfileによって自動requireされるように指定されているもの

##定数を介して自動で読み込み、development環境では自動再読み込みがされるもの
– /app/配下

https://railsguides.jp/initialization.html
https://railsguides.jp/autoloading_and_reloading_constants.html

元記事を表示

deviseを利用してRailsアプリケーションに認証機能を作る

# はじめに
– [devise](https://github.com/heartcombo/devise)はRailsアプリケーションに簡単に認証機能を追加することができるgemです。deviseは[warden](https://github.com/wardencommunity/warden)というRackミドルウェアのラッパーで、実際の認証はwardenが行っています(そのため、実装の詳細を知りたい場合はwardenの実装をまず見る必要があるみたいです)。
– Railsチュートリアルでは認証機能をスクラッチで作成していますが、実際のRailsアプリケーションではこのdeviseを利用して認証機能を作成することがデファクトスタンダードとなっているようです。

– 今回は自分の勉強のため、deviseを利用してRailsアプリケーションに認証機能を追加する方法を整理したいと思います。なお内容は[こちらの記事](https://qiita.com/cigalecigales/items/f4274088f20832252374)をほぼ踏襲しています。謝謝

– なお以下の実装は

元記事を表示

【Rails】Cloud9でRVMからrbenvに移行する手順

##目的
Colud9でデフォルトで入っているRVMをアンインストールして、rbenvをインストールする。

##手順
###RVMのアンインストール

早速、RVMをアンインストールします。

“`
ec2-user:~/environment$ rvm seppuku
Are you SURE you wish for rvm to implode?
This will recursively remove /home/ec2-user/.rvm and other rvm traces?
(anything other than ‘yes’ will cancel)
> yes
Removing rvm-shipped binaries (rvm-prompt, rvm, rvm-sudo rvm-shell and rvm-auto-ruby)
Removing rvm wrappers in /home/ec2-user/.rvm/bin
Hai! Removing /home/ec2-user/.rvm
/home/ec2-user/.rvm has been remo

元記事を表示

【自己学習】Railsチュートリアル第一章

##[Rails]Railsチュートリアル第一章からでてきそうな試験問題(予想)

Rails 5 技術者認定ベーシック試験を受けたいが,
過去問や参考になるものがなかったので、Railsチュートリアルを見ながら自作で出てきそうな問題を作成する。
※予想で作成しているため過度な期待は注意

問題1:Railsサーバーを立ち上げるコマンドを以下から正しいものを2つ選べ

“`
1. rails g
2. rails s
3. rails server
4. rails c
5. rails console
“`

**正解:2,3**

問題2:新規Railsプロジェクトを作成するコマンドを以下から正しいものを選べ

“`
1. rails g
2. rails s
3. rails server
4. rails c
5. rails new
“`

**正解:5**

問題3:Rubyのバージョンを確認するコマンドを以下から正しいものを2つ選べ

“`
1. ruby –version
2. ruby –versions
3. ruby -v
4. ruby –v
5

元記事を表示

【初学者手順書1】Ruby on Rails :開発環境の構築

5月中旬からRuby on Rails(以下、rails)の学習を始めて、超標準的なチャットアプリ制作~デプロイまでを一通り経験したので、自身の備忘録も兼ねて手順を整理していきたいと思います。

私が行ったRailsでのチャットアプリ制作は以下のような流れです。
7回に分けてチュートリアル作成します。

1 Macでの開発環境構築(MacOS Catalina)
2 Railsでアプリの雛形作成
3 フロント画面の実装(hamlとsass)
4 ログイン機能実装
5 グループ機能実装
6 メッセージ機能実装
7 Ajax非同期通信の実装

# Ruby on Rails 開発環境の構築
初めにMac(MacOS Catalina)での環境構築手順を整理します。

## ◉Command Line Toolsの導入
Command Line Tools = ソフトウェアをコマンドライン(ターミナル)で動かすためのツールです。
ログインシェルをzshにするため、ターミナルで下記のようにコマンドを実行します。

“`ターミナル
# zshをデフォルトに設定
% chsh -s /bin/

元記事を表示

Rails delegateメソッド

#delegateメソッドを使う
この記事は[プレゼンターを導入する](https://qiita.com/akilax/items/dd7358f20c82c6fce2fd)の続きです。

前回作ったモデルプレゼンターです。
このプレゼンターにdelegateメソッドを加えていきたいと思います

“`model_presenter.rb
class ModelPresenter
attr_reader :object, :view_context

def initialize(object, view_context)
@object = object
@view_context = view_context
end
end
“`

クラスメソッドdelegateは引数に指定された名前のインスタンスメソッドを定義します。
そしてそのメソッドの働きは、toオプションに指定されたメソッドが返すオブジェクトに委託されます。

今回はrawというメソッドをview_contextが返すオブジェクトに委託します

“`model_presenter.rb

元記事を表示

【自己学習】Railsチュートリアル第一章

##[Rails]Railsチュートリアル第一章から始める

改めて`Railsチュートリアル`を学習したいと思いたっため学習する。

Railsチュートリアル
https://railstutorial.jp/chapters/beginning?version=5.1

最終的には「Rails 5 技術者認定ベーシック試験」を取得する。
そのため定期的に自作の問題を作成して理解度を高める。

使用環境は以下で行う

“`
Rails 5.1.6
Ruby 2.3.0
“`

AWS cloud9は使用せず実装する。

### 1.Railsプロジェクトで使うenvironmentディレクトリを作成する

“`
$ cd # ホームディレクトリに移動する
$ mkdir environment # ‘environment’ ディレクトリを作成する
$ cd environment/ # ‘environment’ ディレクトリに移動する
“`
※基本的なunixコマンドは省略

### 2.rails newを実行する

元記事を表示

カタカナ入力にバリデーションをかける(+入力時に平仮名をカタカナに変換させる)

# カタカナ入力カラムを用意する
例えばHogeモデルのnameカラムとname_kanaカラムを作って入力フォームを作ります。ここでname_kanaカラムにはカタカナ50音と-(長音符)に限定したいところです。2つの工程で確実にカタカナを入力させるように作っていきましょう。

# モデルにバリデーションをかける
まずはモデルにカタカナ(+長音符)以外のものが入らないようにバリデーションをかけます。

“`Hoge.rb

KATAKANA_REGEXP = /\A[\p{katakana}\u{30fc}]+\z/
“`

定数に正規表現を代入します。以下バリデーションで使用します。なんじゃこりゃと思った方![こちらの記事](https://qiita.com/ymrl/items/b34c5493c9383633330b)が参考になるかと思います。ありがたいですね。\p{katakana}はカナ1字にマッチします。\u{30fc}は長音符にマッチします。

“`Hoge.rb

validates :name_kana, format: { :with KATAKANA_R

元記事を表示

Rubocop導入+手順とコマンドの備忘録

# Rubocopを使ったデバックのやり方
* 1.現在の違反をすべて記録した上で、いったん違反では無いことにする
* 2.記録した違反のうち1つを、違反していることに戻す
* 3.その違反を解消する
* 要するに`.rubocop.todo.yml`から違反を消し`bundle exec rubocop`を実行 → 修正

rubocop 通常実行コマンド
#
“`
bundle exec rubocop
“`
大量に出てくるのがコード規約違反!

以下のコマンドを実行すると、規約違反の一覧が表示される`.rubocop.todo.yml`が生成される。
コマンド実行後は`.rubocop.yml`の一番上に`inherit_from: .rubocop_todo.yml`と追加される。
これがあると規約違反が読まれない。
#
“`
bundle exec rubocop –auto-gen-config
“`

以下のコマンドを実行すると、自動である程度を修正してくれる。
#
“`
bundle exec rubocop -a
“`

`.rubocop.yml`

元記事を表示

flashの作り方

## どのページでも表示できるようにする

“`ruby
# _flash.html.haml

.flash
– flash.each do |message_type, message|
= content_tag(:div, message, class:message_type )
“`

“`ruby
# application.html.haml
%body
=render “shared/flash”
=yield
“`

“`ruby
# tests_controller.rb

def update
@test = find(params[:id])
if @user.update(tests_params)
flash[:success] = “成功です!”
else
flash[:alert] = “失敗です!”
end
end
“`

“`ruby
# _flash.scss

.flash{
text-align: center;
.alert{
color: white;

元記事を表示

Railsでのpathとurlの違い

# 経緯
開発中にurlとpathの違いが分からず、link_toの所でRouting Errorが出ました。
部分テンプレートで切り出しているところなど、絶対パスで指定することが望まれる場合もあるので気をつけてください!

## path→相対パス
– link_toで使うことが多い
– コントローラーを跨ぐ場合はurlを使う場合も

## url→絶対パス
– redirect_toではurlが望ましい

元記事を表示

【Rails】Twitterシェアボタンの作成方法

# 目標
![ezgif.com-video-to-gif.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579893/a56b59d8-7603-9cad-7fb1-b306b02b05d4.gif)

# 開発環境
・Ruby: 2.5.7
・Rails: 5.2.4
・Vagrant: 2.2.7
・VirtualBox: 6.1
・OS: macOS Catalina

# 前提

下記実装済み。

・[Slim導入](https://qiita.com/matsubishi5/items/b639ffddecc626856039)
・[Bootstrap3導入](https://qiita.com/matsubishi5/items/b117c95f4dd71340cc80)
・[Font Awesome導入](https://qiita.com/matsubishi5/items/a4c72f436e64ad106ee8)

# 実装

“`slim:books/show.html.sli

元記事を表示

【卒業生】DMMWEBCAMPに通おうか迷っている人に伝えたい事

# はじめに
自己紹介をさせてください。4月にプログラミングスクールDMMWEBCAMP(以下、**DWC**)を卒業し、7月より都内の自社サービスを展開している企業で勤務することになりました[yuki](https://twitter.com/yuki82511988)と申します。

元記事を表示

L.A studio app construction note 200622

L.A APP 構築 2020年6月22日

■学習教材
Code4Startup

■アプリ作成
ホーム画面の表示修正
サーチ機能の非表示
スタジオリストが3点表示を6点表示に変更
画像表示が各スタジオの詳細ページへの遷移

@変更前
![スクリーンショット 2020-06-19 16.57.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/468139/50d9b710-9e99-8080-8d71-82684c4ef0d0.png)

@変更後![スクリーンショット 2020-06-22 18.50.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/468139/9ca43ed2-782c-4f31-fdab-daaeba7d1129.png)

元記事を表示

Yay! I’m on Rails!

# はじめに
初`Ruby on Rails`記念です。
# on Rails!
![rails.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538241/242d3045-89b6-28ef-b0bc-7cd4af0ca941.png)
先輩諸氏からすれば見慣れた画面かもしれませんが、嬉しいです。
# 環境
“`raspberrypi.bash
pi@raspberrypi:~ $ uname -a
Linux raspberrypi 5.4.45-v7+ #1321 SMP Wed Jun 10 17:33:27 BST 2020 armv7l GNU/Linux
“`
見ての通り、
`raspberry pi 3 B+`上の`raspberrypi`OS
# 嵌ったところ
例によって`sqlite`で嵌っております。
*[こちら -Qiita](https://qiita.com/___inon_/items/7566cc638d47ba99e23d)*を参考にして乗り切りました。

`Ge

元記事を表示

EC2デプロイ時、bundle installができずUndefined local variable or method `git_source’ for Gemfileのエラーが出る件

EC2デプロイ時に、サーバーにアプリをcloneするもbundle installでエラーが発生してハマりました。
忘備録として載せておきます。

##環境
Ruby 2.5.1
Rails 5.2.4.3

[こちら](https://qiita.com/Yuki_Nagaoka/items/dbb185feb6d4f051c2f2)の記事を参考にAWSにデプロイを進めている最中、bundle installを試みると以下のエラーが発生しました。

“`
$ bundle install
-bash: bundle: コマンドが見つかりません
“`
どうやら先にbundlerをインストールする必要があるみたいです。

“`
$ gem install bundler
Fetching: bundler-2.1.4.gem (100%)
Successfully installed bundler-2.1.4
Parsing documentation for bundler-2.1.4
Installing ri documentation for bundler-2.1.4

元記事を表示

ProgateのRuby on Railsコースで気になった所【エラーメッセージのeach文】

プログラミング未経験の初心者ですが、少し前にProgateのRuby on Railsコースを終わりました。

Railsチュートリアルをしながら復習してみると、Progateをやっていた時はあまりピンと来なかったけど、今なら少し理解できることが増えたので、気づいた点をまとめていきたいと思います。
この記事はその2です。
その1はこちら
https://qiita.com/HiMinmeg/items/1e29bf9252096d463f6b

Progateしているけど、ピンと来ていないな、ここ分からないなと思っている方のお役に立てば幸いです。

## エラーメッセージのeach文【コースⅤ】
バリデーションをかけて、投稿に対してエラーとなった時(制限文字数以上入力したとか…)投稿すると、エラーメッセージが表示されるようにします。

この時、each文を使う理由が分かっていませんでした。
考えてみると当たり前のことだったのですが、それでも理解できた時嬉しかったので、記録に残したいと思います。

エラーメッセージのeach文は例のような使い方になります。

<% @post

元記事を表示

【Carrierwave】別のモデルでも画像アップロードをしたい時

## 画像をアップロードしてもデータがエラーになる!

railsで画像投稿機能を実装中。
新たに別モデルで画像アップロード機能を追加したいな!
imageカラムを追加して早速アップロード!
しかしデータ名がActionDispatch::Http::UploadedFileになってしまった。
解決方法を備忘録として投稿。
初投稿の初学者ですが参考になれば幸いです。

## 結論:新たなuploaderファイルの作成と連携が必要

Carrierwaveは導入してあるので、カラムを追加すればアップロード機能完成!と勘違いしていた。

各モデルに各uploaderファイルの作成が必要だった。

#### 手順
– 画像用のカラムを作成
– 新たなuploaderファイルの作成
– モデルと関連付け
– コントローラのストロングパラメータにカラムを追加

元記事を表示

OTHERカテゴリの最新記事