Rails関連のことを調べてみた2019年11月17日

Rails関連のことを調べてみた2019年11月17日
目次

redirect_toで思いどおりのページへ

#redirect_to “ページ先”

これだけで好きなページへ遷移させることができます。
指定方法は以下。

##URLで指定

“`ruby:xxx_controller.rb
redirect_to “http://www.manbow.com”
“`

##prefixで指定

“`ruby:xxx_controller.rb
redirect_to root_path
“`

##アクションで指定

“`ruby:xxx_controller.rb
redirect_to action: :new
“`

##指定したコントローラーのアクションで指定

“`ruby:xxx_controller.rb
redirect_to controller: :users, action: :show
“`

##個別のリソースを指定

“`ruby:xxx_controller.rb
redirect_to controller: :users, action: :show, id: 1
“`

元記事を表示

【rails】PCからrvenvだけを間違ってアンインストールしてしまって鼻血が出た話

#コトの顛末
EC2に自分の作ったアプリをgit cloneしまして「さて、bundle installじゃ!」という時に、
エラーが出まくり。どうやらrvenvをアンインストールして、再度入れ直すと良いという事が書いある記事を見たのでやろうとしたら、タイムアウトしていたよう。
ローカル場でコマンドを打ち込んでしまい、PCからrvenvをアンインストールされrails起動しなくなってしまいました。

勉強中の身ではありますが、開発中の出来事で発狂しそうになり、
物理以外で初めて鼻血が出ました。

#もう一度入れようとするとクセあり
最初に環境構築したように、普通にrvenvをもう一度インストールすればいいんでしょ?って思ったらそうも行かず。

rvenvのインストールはうまく行くのですが、
そのあとにbundlerを入れるくだりで下記のようなエラーが出る。

“`
$ gem install bundler
ERROR: While executing gem … (Errno::EACCES)
Permission denied @ rb_sysopen – /Use

元記事を表示

続・ActiveSupport::Callbackを使うのをやめろ

[ActiveSupport::Callbackを使うのをやめろ](https://qiita.com/luccafort/items/69e943b26ef6890b8a30)という話をしたがどうにもスッキリしない部分が残ってしまっていたのがKyoto.rbで話すテーマにしたらシュッと解決できたので共有。

– [Kyoto.rb Meetup 20191116](https://kyotorb.doorkeeper.jp/events/100041)

## 前回からのモヤッと部分

– ActiveRecord::Callbackを使わないほうがいいという結論に達したが本当にそうなのか?
– だとしたらもっと多くの人が議論してRailsフレームワークから除外しているのではないか?
– コールバックが本当に悪いのか?悪いのは実装側の都合なだけでは?
– プロダクトやチームのレギュレーションのようなもので縛ることが果たして本当に正しいのか?
– それは対処療法としての対応でなのでは?
– railsはMVCフレームワークなのでコールバックがどうしても浮

元記事を表示

#Rails + #rspec HTTP options request test example : valid and invalide case

# Rails + rspec で HTTP options リクエストの 正常パターンと不正パターンをテストする例

“`rb
context ‘valid request’ do
subject { process :options, ‘/’, headers: headers }

let(:headers) do
{
‘Access-Control-Request-Method’ => ‘GET’,
‘Origin’ => ‘http://localhost’
}
end

before { subject }

it { expect(response.status).to eq 200 }
end

context ‘invalid request’ do
subject { process :options, ‘/’ }

before { subject }

it { expect(response.status).to eq 404 }
end
“`

# Original by Git

元記事を表示

Rails6でSemanticUIのJavaScriptを読み込む方法(ドロップダウン・アコーディオン等を使いたい!)

**[SemanticUI](https://semantic-ui.com/)**でドロップダウンやアコーディオン等の部品を使用するには、JQueryをインストールし、SemanticUIのJavaScriptを読み込む必要があります。

Rails6以前でSemanticUIを利用する方法についてはQiitaなど情報が充実しています。しかし、**Rails6からJQueryのインストール方法やapplication.jsの読み込み方法が変更された**ため、Rails6での設定には戸惑う方が少なくないかと思います。(僕がそうでした。)

ということでこの記事には、**Rails6における、SemanticUIのインストールからJavaScriptを読み込む(ドロップダウン等の部品を動かす)方法**を記載します。

確認環境は以下の通りです。

* Rails 6.0.0
* JQuery 3.4.1
* semantic-ui-scss 2.4.2.0

## SemanticUIのインストール

まずはSemanticUIをインストールする方法から。Railsでは、**[seman

元記事を表示

Indeedパブリッシャープログラムを利用して、求人広告をapiで取得する

求人サイトIndeedでは、求人広告を掲載することによって報酬を得られる**Indeedパブリッシャープログラム**という施策を行っています。
今回は、公式のAPIを用いて求人情報を取得する方法について、実装例を交えて共有したいと思います。

# アカウントを登録する
まず、[Indeedパブリッシャープログラム](https://jp.indeed.com/publisher)にアクセスしてログインorアカウント登録しましょう。
スクリーンショット 2019-11-15 10.01.31.png

# サンプルリクエストを実行する
登録できたら、[求人検索apiタブ](https://ads.indeed.com/jobroll/xmlfeed)を選択しましょう。求人情報を取得する**サンプルリクエスト**や

元記事を表示

Railsチュートリアル – Webフォームのコードを共通化する際に、フォームのPOST先をどうyieldするか

# 記事内容

[Railsチュートリアル 第10章 10.1.1 編集フォームの演習2](https://railstutorial.jp/chapters/updating_and_deleting_users?version=5.1#sec-exercises_edit_form)で手こずった部分と、その解決策に関する備忘録です。

# 実装の全体像

実装の全体像としては、以下のようになります。

* バージョン 5.1.6 のRails
* `users#new`と`user#edit`に、`form`というパーシャルを埋め込む
* ソースの実体は埋め込みRuby(erb)
* 埋め込みそのものは、erbの`render`メソッドで行う

# うまくいかない実装

## 実装内容

以下のような実装だとうまくいきません。

まずは`_form.html.erb`。`form`パーシャルの実体です。

“`erb:app/views/users/_form.html.erb
<%= form_for(@user, yield(:path)) do |f| %>

元記事を表示

[メモ]2019/11/16 rails generate

#ページ作成コマンド

一覧ページを作るときは、indexというアクションを使うのが一般的。
コントローラをposts とすると

“`terminal
$ rails generate controller posts index
“`
###ページ作成コマンドを入力した時に自動作成されるファイル

– コントローラファイルに「posts_controller.rb」
– ビューファイルに「index_html.erb」
– posts/indexへのルーティングが追加される。

「posts/index」というURLが送信された時に、postsコントローラのindexアクションで処理できるようになる。
get “URL” => “コントローラ名#アクション名”

“`rails.routes.rb
rails.aplication.routes.draw do
get “posts/index” => “posts#index”
end
“`
#データベース テーブル作成コマンド
マイルレーションファイルというデータベースに変更を指示するためのファイルを作成しましょう。

元記事を表示

Rails チュートリアル 11章 独学学習メモ

こちらは『[Railsチュートリアル](https://railstutorial.jp/chapters/beginning?version=5.1#sec-introduction)』の独学学習のメモになります。

環境について
– Macを使用
– cloud9を利用

#第11章

これまでの実装では、アカウント登録をした時点で、すべての機能にアクセスができるようになっています。

しかし、安全性を考え、メールアドレスの持ち主か確かめるために、メールでの本人確認をしていきます。

そして、メールアドレスを忘れた時には、リセットの手段として、メールアドレスを使用するため、メールアドレスの本人確認がより重要になります。

#11.1 AccountActivationsリソース

具体的には、このようにしていきます。

>1.ユーザーの初期状態は「有効化されていない」(unactivated) にしておく。
2.ユーザー登録が行われたときに、有効化トークンと、それに対応する有効化ダイジェストを生成する。
3.有効化ダイジェストはデータベースに保存しておき、有効化トークンはメールア

元記事を表示

ぼくはこんな記事を書いてきた

記事タイトルは立花隆『[ぼくはこんな本を読んできた](https://books.bunshun.jp/ud/book/num/9784163510804)』のパロディー。
ふとマイページを見たら,これまでに書いた記事が 99 本であることに気づいた。
100 本目は何を書こうか。思いつかないので過去記事を振り返ってみた。
101 本目以降の記事も必要に応じて追記していくことにする。

# Ruby

やっぱり Ruby の記事が多い。

## 初心者向け

Ruby の初心者に知ってもらいたいこと。

* [Ruby のエラーメッセージを読み解く(初心者向け)その 1](https://qiita.com/scivola/items/3017068a354892b239f4)
エラーメッセージが読めるようになるのが中級への第一歩。
* [Ruby のエラーメッセージを読み解く(初心者向け)その 2](https://qiita.com/scivola/items/77017693de371ab49667)
この続きを書くつもりだが,果たせていない。
* [Ruby の文

元記事を表示

Dolphinというシングルユーザー用のActivityPub serverを立ててみた

activitypubというprotocolがあります。わかりやすく言うと、分散snsのprotocolです。このprotocolを使ったserverで有名なのはmastodonです。

今回、misskeyというmastodonに似たプロジェクトがあるのですが、その姉妹プロジェクトであるdolphinがシングルユーザー、つまり、お一人様インスタンスと呼ばれるサーバーに特化しているようなので、herokuで立ててみました。

https://github.com/syuilo/dolphin

“`sh
$ git clone -b master git://github.com/syuilo/dolphin.git
$ cd dolphin
$ cp .config/example.yml .config/default.yml
$ npm i

$ heroku create $APP_NAME
$ ls -a ./.git
$ heroku git:remote -a $APP_NAME
$ heroku buildpacks:set https://github.com/

元記事を表示

Rails6系にadmin-lte入れてHerokuにデプロイするとコケるエラーの解消法

## プッシュしたときのエラー内容
“`
Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 4 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 21.87 KiB | 3.12 MiB/s, done.
Total 4 (delta 3), reused 0 (delta 0)
remote: Compressing source files… done.
remote: Building source:
remote:
remote: —–> Ruby app detected
remote: —–> Compiling Ruby/Rails
remote: —–> Using Ruby version: ruby-2.6.3
remote: —–> Installing dependencies using

元記事を表示

【解決】Herokuデプロイで躓いた1年前の自分へ

## railsでアプリを作ってこれからデプロイするところからのスタート!!

とりあえずherokuにログイン

“`
$ heroku login
“`

herokuにアプリ作成

“`
$ heroku create
“`

precompile

“`
$ rails assets:precompile
“`

herokuのbuildpackにrubyパッケージセット

“`
$ heroku buildpacks:set heroku/ruby
“`

herokuのbuildpackにnodejsパッケージ追加

“`
$ heroku buildpacks:add –index 1 heroku/nodejs
“`

ひとまずmasterにpush

“`
$ git add .
$ git commit -m ‘heroku’
$ git push origin master
“`

herokuへデプロイ!

“`
$ git push heroku master
“`

herokuでdb:migrate

“`
$ hero

元記事を表示

ローカル環境にRailsの環境を構築

はじめに

Ruby on Railsの環境構築に関する記事はたくさん存在するので、自分の備忘録的にメモ程度に残す

なぜ

Railsチュートリアルをやる上で、AWS Cloud9を使ってたんですが、ローカルにあったほうが便利じゃね?と思った
https://railstutorial.jp/

環境

OS:macOS Mojave

今の環境とRubyの準備

Rubyはrbenvでいれる。

“`bash
$ which ruby
/usr/bin/ruby
$ ruby -v
ruby 2.3.7p456 (2018-03-28 revision 63024) [universal.x86_64-darwin18]
“`
こちらを参考に環境構築していきます。

rbenv を利用した Ruby 環境の構築

“`bash
$ brew install rbenv ruby-build

.

元記事を表示

deviseのみを用いて2つの異なるログイン機能を実装する方法(ruby on rails)

# はじめに

久しぶりの投稿になります。(最近コーディング以外のことをやっていたせいでqiitaに記事が書けなかった^^;)

ECサイトの開発でrails-admin等の管理者機能作成gemを使わずに、deviseのみを用いて管理者とユーザーのログイン機能を実装した時に思いのほか詰まったので備忘録がてらメモを残しときます。

開発環境
仮想環境:Linux(vagrant)
rails 5.2.3
ruby 2.5.7

##サンプルプロジェクトの作成
まずはrails newでサンプルとなるプロジェクトの作成を行いましょう。

“`ruby:コンソール
$ rails new devise-sample
“`
これでサンプルプロジェクトの作成完了です。

##deviseのインストール
まずはgemファイルにdeviseを入れてましょう。(私は毎回ファイルの一番下にdeviseを追加しています)

“`ruby:Gemfile
.
.
.
gem ‘devise’
“`

“`ruby:コンソール
$ bundle install
“`

“`ruby:コンソール

元記事を表示

Windows環境でVSCodeでのRuby on Railsの開発環境構築手順

※ Rubyの推奨環境はLinux?とはいえWindowsしか持ってないよ!って人向けです

# 1.Rubyのインストール

Rubyで開発する上で、最も必要なものはRubyのインストールなので
https://rubyinstaller.org/downloads/
からRuby + Devkitをダウンロードする

ダウンロードしたらexeファイルを実行してインストールをする

インストールしたら、
“`
ruby -v
“`
コマンドを実行、バージョンが表示されたならばOK
バージョンが表示されなければ、Rubyをインストールしたパスの下の/binフォルダにパスを通す

2.Git bashのインストール

https://gitforwindows.org/
からgitをダウンロードし、インストールする

3.VSCodeのインストール、環境整備

https://code.visualstudio.com/
より、VisualStudioCodeをダウンロードし
exeファイルを実行してインストールする

EXTENSIONSを選択し、Rubyを選択してこれもインストー

元記事を表示

やさしい図解で学ぶ 中間テーブル 多対多 DB データベース joinモデル 概念編

#中間テーブルって?

“join table もしくは junction table”とも呼ばれ、2つのテーブル(エンティティ)を結びつける、結合テーブルを指します。

↓ER図のテーブルとテーブルの間にそれぞれを繋げるテーブルがあります。
これが”**中間テーブル**”です。(ER図の見方は[こちら](https://qiita.com/ramuneru/items/32fbf3032b625f71b69d))

スクリーンショット 2019-11-14 16.38.09.png

2つのテーブルの間に
### ” 多対多 ”
という関係性が生まれた時、ある問題点を解決する1つの方法としてこの中間テーブルを配置します。

これから詳しく図解を使って紹介しますのでちょっとずつイメージしていきましょう。

#

元記事を表示

gem ‘devise’に苦戦 プログラミング 37日目

##gem’devise’使う上で考慮すべきこと
**1.URLかぶり**

例えばdeviseをuserモデルに紐づけてinstallしたりすると以下のような(一部)routesが自動的にできます。

**URLかぶりとは??**
userのアカウント情報を表示させるusers/showを作ろうと、get “users/:id” => “users#show”をroutesの設定しました。そうするとそれまでできていたlogoutがうまくいかなくなりました。その原因として考えた結論が、users/:idとdeviseで設定した他のusers/~~~が被ってしまっているということです。(あっているかは定か)

**usersはやめpages/:idにすることで解決しました。**

“`
new_user_session GET /users/sign_in(.:format) devise/sessions#ne

元記事を表示

Model名とController名が異なっていてもデータ移動はできるらしい 学習37日目

##〇〇モデルのデータは□□コントローラー上でも使える##

UserモデルのデータはUsersコントローラーで,Pageモデルのデータはpagesコントローラーでという**大きな思い込み**をしていた。(冷静に考えれば、application.html.erbはいろんなモデルからデータを取ってきている)

#勘違いしていたこと#

**1.モデルとコントローラーのデータのやり取りは、同じ名前同士で行う。←そんなことない!**

UserモデルのデータはUsersコントローラーで,Pageモデルのデータはpagesコントローラーでという**大きな思い込み**をしていた。(冷静に考えれば、application.html.erbはいろんなモデルからデータを取ってきている)

**2.controllerの内容を継承したければコピペする←それだけではない!**

確かにuserscontrollerの内容をそのままpagescontrollerでも使いたければ、コピペも1つの手段になる。しかしめんどくさいのでclassを継承をすれば良い(pagescontroller

元記事を表示

【AWS EC2】bundler -v -bash: bundler: コマンドが見つかりません

rbenvうっかり入れ忘れなので、下記のコマンドを入力すればOK。
バージョンはご自身の環境に合わせてください。

“`
$ rbenv install 2.5.1
$ rbenv global 2.5.1
$ rbenv rehash #rehashを行う
$ ruby -v # バージョンを確認
“`
上記のコマンドでダメだった場合は、下記の記事を試してみてください。

【rails】PCからrvenvだけを間違ってアンインストールしてしまって鼻血が出た話
https://qiita.com/kaorioka09jm/items/77f3b64027d8ed05bb21

元記事を表示

OTHERカテゴリの最新記事