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

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

Elasticsearchを含むRspecのリクエストスペックを書いてみた

### 環境

railsとelasticsearchをそれぞれ別コンテナで動かしている

“`yaml
services:
elasticsearch:
image: elastcserachのdockerイメージ
(以下省略)
rails:
image: railsのdockerイメージ
(以下省略)
“`

### テスト用にGemを追加

テスト用のクラスタを別ポート(デフォルトは9250)で立ち上がることができる
https://github.com/elastic/elasticsearch-ruby/tree/master/elasticsearch-extensions

### テスト用のクラスタを立ち上げる

elasticsearchを使うときだけ立ち上げ、終了したら止める

“`ruby
require ‘elasticsearch/extensions/test/cluster’

before(:context) do
Elasticsearch::Extensions::Test::Cluster.sta

元記事を表示

Rails Tutorial 第8章完了

#2020/7/14 0.5時間
#2020/7/15 0.5時間
8.1まで完了しました。
#2020/7/16 0.5時間
||=の意味を理解するのに時間がかかりました。
#2020/7/17 0.5時間
#2020/7/18 2.5時間
土日は時間が取れ、平日より進められました。
#2020/7/19 2時間
1.5時間で8章が終わりました。
残り0.5時間は9章です。

これで8章を完了しました。
所要時間は6時間です。

難易度が上がり、Ruby独特の表記の意味を理解するのに時間がかかりました。
毎日朝に少しずつが出来てきています。

#別のブラウザで開くと「VFS connecion does not exist」エラー
Cloud9でやっています。
注11にある、

>クラウドIDEをご利用の場合は、別のブラウザでログイン動作を確認することをおすすめします。そうでないと、クラウドIDEを開いているブラウザも一緒に閉じるはめになってしまいます。

に従い、環境を
・Cloud9はFirefox
・実行用にChromeブラウザ
としました。

Cloud9から開いたFiref

元記事を表示

初心者がDockerで開発環境構築してみた(Rails&MySQL)

#
### はじめに
現在、就職活動中のプログラミング初学者です。
開発環境にDockerを取り入れる為、いろいろ勉強して自分用のメモとしてまとめておりましたが、折角なら同じ初学者の方の役に立てればと思い投稿させて頂きます。既に多くの方がDockerの環境構築に関する記事を書かれており、そういった記事を参考にさせて頂きながら、メモとしてまとめていましたので、内容はそんなに目新しものではありません。予めご了承ください。また、誤った表現などがありましたらご指摘頂けると幸いです。

## 開発環境

– Ruby 2.6.3
– Rails 5.2.3
– MySQL 5.7
– MacOS 10.15.5

## 前提条件
– [Dockerhub](https://hub.docker.com/)のアカウントを作成している。
– [Docker for Mac](https://hub.docker.com/editions/community/docker-ce-desktop-mac)をインストールしている。
– Dockerの基礎はある程度抑えている。

Dockerの基本的なこ

元記事を表示

deviceでストロングパラメーターを使いたい!

実は元々deviceでは最初にマイグレーションファイルを生成した時のカラム以外は保存できない仕組みになっている。

ただ後から追加したカラムにもストロングパラメータを適用したい・・・

そんな時はconfigure_permitted_parametersメソッドを使おう!

【記述先】application_controller.rb

“`ruby
ass ApplicationController < ActionController::Base before_action :configure_permitted_parameters, if: :devise_controller? private def configure_permitted_parameters devise_parameter_sanitizer.permit(:sign_up, keys: [:nickname]) end end ``` devise_parameter_sanitizer.permit(:アクション名, keys: [:フォームなどで送信したデータのキ

元記事を表示

カラムを一発で作成する

普通なら・・・
rails g modelコマンドでモデルと一緒に生成されたmigrationファイルを編集するわけだが面倒くさい。

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

あとはターミナルで
rails db:migrateを実行するだけ。あら簡単。

元記事を表示

railsでログインしてないユーザーのアクセスを制限したい!

deviceというログイン機能の実装を簡単にしてくれるGemの導入前提

1.ログインしてるかどうか確かめる
  user_signed_in? メソッドを使う
  true → ログインしています!
  false → ログインしてないです!

2.リダイレクトする

“`ruby
before_action :move_to_index, except: [:index, :show]
“`

“`ruby
def move_to_index
unless user_signed_in?
redirect_to action: :index
end
end
“`

まずルーティングの振り分けでコントローラーに処理がきた途端にmove_to_indexが実行される
そこでfalseが返り値として確認された途端、ルーティングの振り分けなんかお構いなしでindexへ飛ばされる

元記事を表示

binding.pryの使い方【残53日】

binding.pryの使い方がいまいちわかってなかったところ
本日エラー解決のために使用できたので備忘録

新しいチャットルームを作成するというセクションで何度CreateRoomをクリックしてもリロードされる
まあこれはrenderのせいなんだけど
エラー文がでれば解決しやすいものをエラーが出ない
さて困った

ここでbinding.pryの登場

4-1.binding.pry.png
createメソッドのところがどうもおかしいと思ったのでpryにかけてみることに

4-3.binding.pry.pngなぜURIではなくPrefixを使うのか

resoucesメソッドでルーティングを設定すると・・・

“`ruby
resources :tweets, only: [:destroy]
“`

destroyアクションを実行するためのURLわかんないじゃん!
だからPrefixで遷移先を指定した方が便利なんだよ〜

ちなみにURLにidが含まれている時は

“`ruby
Prefix_path(変数.id)
“`

でparamsできちゃいます

元記事を表示

僕はバリデーションをかけたい!!

データベースに制限をかけたい
つまり管理役であるモデルに指示をする

validates :カラム名, 設定したいルール: true

「このカラム名にこのルールを設定したいんだけど?」
という意味。

app/models/tweet.rb

“`ruby
class Tweet < ApplicationRecord validates :text, presence: true end ```

元記事を表示

find, find_by, find_by_sqlメソッドの違いについて

railsの学習を進めていく上で似たようなメソッドが出てきたのでまとめたいと思います。

##findメソッドとは

指定したモデルの`idを引数に設定することでレコードを取得するメソッド`です。

例えば↓↓↓

“`ruby
pry(main)> Tweet.find(1)
(0.4ms) SET NAMES utf8, @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ‘,STRICT_ALL_TABLES’), ‘,NO_AUTO_VALUE_ON_ZERO’), @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483
Tweet Load (0.3ms) SELECT `tweets`.* FROM `tweets` WHERE `tweets`.`id` = 1 LIMIT 1
=> #

元記事を表示

コントローラー作成は「複数形」で!

必ずsを最後につけるよ!

“`ruby
% rails g controller tweets
“`

もし間違えて単数形で作成してしまったら・・・?

“`ruby
% rails d controller tweet
“`

これで削除できるから大丈夫!

元記事を表示

超初学者向け!resourcesメソッドの書き方!

resourcesを使うと・・・
7つのアクションへのルーティングを一度に自動生成できる!

resources :コントローラー名
※コントローラー名だから小文字でs付き

“`ruby
Rails.application.routes.draw do
resources :tweets
end
“`

特定のアクションだけ生成させたい!
resources :コントローラー名, only: :アクション名

“`ruby
Rails.application.routes.draw do
resources :tweets, only: [:index, :new]
end
“`

特定のアクション以外だけ生成させたい!
resources :コントローラー名, except: :アクション名

元記事を表示

学んだことをできるだけ棚卸しする選手権

# これまでに学んだことを棚卸し。基本的には作成したポートフォリオ(開発〜デプロイ)に絡んだことをさらっと書いてく。(面接で聞かれても大丈夫なように。。。。)

##できるだけアルファベット・50音順。徐々に更新していく

##ActiveRecord
データベースの操作にはSQLが使われる。
railsではmodelに**ActiveRecord**が使われていて、rubyでデータベースを操作することができる。
SQLの知識がなくとも**ActiveRecord**のおかげでデータベースの操作ができる

##API
クライアントではなく、プログラムが直接サービスを利用するためのものが**API**。
緯度経度がわかれば、その場所を地図に表示してくれるサービスがあったりする。

##AWS関連
https://qiita.com/ashketcham/items/ad55b24613f3cdaaf114

##bundler
どのgemをどのバージョンで利用するのかを管理してくれる。Gemfileでgemを管理。

##CRUD
「**C**reate(作成)・**R**

元記事を表示

Railsで簡単なAPIを作る

# Rails環境の用意
https://github.com/2754github/Rails_and_MySQL_with_Docker

# rack-corsのインストール
`Gemfile`の`rack-cors`のコメントアウトを外してから下記を実行する。

“`bash:ターミナル
$ bundle install
“`
`rack-cors`をインストールすると`config/initializers/cors.rb`が生成されるので、それを下記のように編集する。

“`ruby:config/initializers/cors.rb
Rails.application.config.middleware.insert_before 0, Rack::Cors do
allow do
origins ‘*’

resource ‘*’,
headers: :any,
methods: [:get, :post, :put, :patch, :delete, :options, :head]
end
end
“`

元記事を表示

[自分用備忘録]Rails開発で忘れちゃいけない初歩の初歩

自分は初学者なので、新しいものを勉強しては基礎を忘れる段階にいます。
なので自分用に備忘録として忘れちゃいけないRails開発の基礎の基礎を記録しておきます。

#MVCアーキテクチャ

http://〜

Routes.rbファイルでルーティングを確認

(C)コントローラでアクションの確認→(V) 対応するアクションのビューファイルをとってくる

(M)モデルとやりとりする(モデルはアプリケーションの根幹となる部分)

だから開発の流れは基本的に
ルーティング設定する→コントローラでアクション設定する→そのアクションに対応するビュー作る。

#$rails routesで今設定されてるルーティングが確認できるよ

routes.rbにrootとか設定したら、$rails routesでルーティングの確認してみてね。

Rails6以降なら–expandedオプションつけてもっと詳細も確認できるよ。

#railsコンソールで確認できるよ

コマンドで`$rails c`すると、irb> が起動される。

articleモデルがあるならarticle.allとか

元記事を表示

ATOMのerbファイルでEmmetが効かなくなった時に

初めてQiitaに記事を書きます。
今Railsを学習している所で、エディタはAtomを使っています。
Railsの.html.erbファイルを記述している時にEmmetの機能が効かなくなったので、個人的に解決した方法を残しておきます。

#Atomで、erbファイルを編集する時にEmmetの機能を使いたい

普通のhtmlファイルを編集する時に
nav.box>ul>li*5
のようにすると、tabキーで

“`html

“`
になるのに、erbファイルだと全く効かず、ただインデントが追加されるだけでした。
Atomの記事が少なく解決までに時間がかかったので、個人的に解決した方法を残しておきます。

##Emmetの設定で、 html.erbも読み込めるようにする

Atomを開き、上部タブのAtom > 環境設定 > 設定フォルダを開く に行きます。

元記事を表示

[Rails]ancestryを使った時のちょっとしたつまづきから学んだこと

# はじめに
個人制作でファッション系ECサイトを制作した時に「階層のあるカラム」を実装したいと思い、まさにそれを実現してくれる**ancestry**を使用した時のちょっとしたつまづきから学んだことを備忘録として残しておきます。

**また、本記事は手順書ではなく、初学者が陥りがちな失敗の紹介です!**

※実装の手順等は割愛します。Qiitaにもたくさん他の方の記事があるので以下参考にしていただければと思います。
[ancestryによる多階層構造データを用いて、動的カテゴリーセレクトボックスを実現する~Ajax~](https://qiita.com/ATORA1992/items/bd824f5097caeee09678)
[ancestryで作ったセレクトボックスに初期値を表示する方法](https://qiita.com/hukuro310/items/1843d22b4ea29c2b1692)

# 実現したいこと
ancestryを用いた以下の動的なセレクトボックスを**編集時も有効にしたい**です。

[![Image from Gyazo](https://i.

元記事を表示

27歳プログラミング未経験から開発エンジニアになる話

###どーも「りょうちん」と申します。
###今回の記事は、Webエンジニアになるためにすべきこと!というテーマです!
先日、業界未経験からエンジニアになるチャンス頂きました。27歳、前職ネジ売ってました男子です。 今は試用期間中ですけど、実務でプログラミングできることがめちゃ嬉しいです。
これからプログラミング学ぼうかなーて考えてる人とか、どうやったらエンジニアなれんの?ってかエンジニアなるのって簡単そう?ってネット記事に踊らされそうになってる方。笑
####是非読んでください!!エンジニアになるのってそんな甘くないです!!
#####ちなみに僕は、Kintoneでのシステム提供を現在主軸としている会社に勤めさせていただくことになりました。主にJavaScriptを使用します。ですので、今後はKintone、JavaScript周辺情報をメインに発信させて頂きます。
これから出来るだけ毎日投稿していきますので、Twitterフォローお願いしますー!

####で本題です!ずばり未経験からエンジニアになるためにはどーすりゃいいの?
先に結論書きますと、

元記事を表示

[herokuデプロイ手順③]Rubyのバージョン指定からデプロイしてアプリへのアクセスまで(完)

## はじめに
今回は前回の続きでherokuデプロイを実行し、アプリへのアクセスまで行い、herokuデプロイにおける工程のアウトプットを完了させたいと思います。

前回の**[herokuデプロイ手順②]新しいアプリの作成からindexアクション表示まで**をまだ読まれていない方はそちらを先に確認して下さい。(下記URLから)
https://qiita.com/nkekisasa222/items/52c872957b30f4e8de1e

## 環境
Rails 5系
macOS catalina 10.15

## Rubyのバージョンを指定する
Rails 5にはRuby 2.2.0以降が必要なので下記コマンドで確認。

“`ターミナル.
$ ruby -v
“`

次に、確認したバージョンを下記のようにGemファイルに記述。

“`Gemfile
ruby ‘確認したバージョン’
“`

## アプリをGitに保存する
まずGitがインストールされているかの確認。

“`ターミナル.
$ git –help
usage: git [–version] [–

元記事を表示

CarrierWaveを使用した際アップロードした画像をGitにpushしない

こんばんは! たかです。
今日はCarrierWaveというgemを使用してアップロードした画像をGitにpushしないようにする方法を紹介します。

## gitignoreへの記述 ##

“`ruby:gitignore
public/uploads/*
“`

上記のようにgitignoreファイルに記述することで、アップロードした画像をGitにpushしなくなります。?

### 原因 ###
CarrieWaveを使用すると、アップロードされた画像ファイルの保存場所は、デフォルトでpublic/uploads以下に保存されるようになっています。

### 対処 ###
もし一度Gitにpushしてしまった場合は、Git側のディレクトリを削除しなければpushされ続けるので、ターミナルで以下のようにして削除しましょう。?

## ファイルを削除するとき ##

“`
git rm [削除したいファイル]
“`

## ディレクトリごと削除するとき ##

“`
git rm -r [削除したいディレクトリ]
“`

## ファイルを残したいとき ##
**–ca

元記事を表示

OTHERカテゴリの最新記事