- 0.1. 初心者
- 0.2. Railsチュートリアル 第8章 基本的なログイン機構 – セッション
- 0.3. Rails6 のちょい足しな新機能を試す101(ActionController::Paramters#transform_keys編)
- 0.4. EC2にyumでnodejsをインストールしようとしたらできなかった話
- 0.5. 【駆け出しWEBエンジニアのためのメモ】WEBアプリ作成の作業フロー_基礎(Rails)
- 0.6. RailsにcircleCIを構築し、githubと連携してrubocopとrspecテストを走らせる
- 0.7. Devise (Warden) + Redis で管理してる Rails のセッションから特定ユーザのものを破棄する
- 0.8. 10月29日 学習進捗状況
- 0.9. 【開発日記】薬価検索アプリno.4 〜データベース設計〜
- 0.10. 【駆け出しWEBエンジニアのためのメモ】オススメサイトと検索方法(Google,Railsなど)
- 0.11. 作成したRailsアプリケーションでDocker環境構築
- 0.12. mac で コマンド$ bundle exec rails new アプリ名 を実行した時にエラーが出た話
- 0.13. Rails/複数のビューで使うransack検索
- 1. ransackとは
- 2. 使い方
初心者
rails sをしたら
=> Booting Puma
=> Rails 6.0.0 application starting in development
=> Run `rails server –help` for more startup options
Exiting
Traceback (most recent call last):
79: from bin/rails:3:in `‘
78: from bin/rails:3:in `load’
77: from /Users/uchimurakana/kozinn/wed/bin/spring:15:in `‘
76: from /Users/uchimurakana/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require’
75: from /Users/uchimurakana/.rbenv/versions/2.5.1/lib/ruby
Railsチュートリアル 第8章 基本的なログイン機構 – セッション
# 認証システムと認可モデル
## 認証システム(Authentification System)
以下のような仕組みのことを言います。
* Webブラウザが、ログインしている状態を保持する
* ユーザーによってWebブラウザが閉じられたら状態を破棄する## 認可モデル(Authorization Model)
以下のような仕組みのことを言います。
* ログイン済みのユーザー(current user)だけがアクセスできるページの制御
* ログイン済みのユーザーが扱える機能の制御## 認証システムと認可モデルを基盤として実現する機能
以下のような機能は、認証システムと認可モデルを基盤として実現される機能です。
* ログインしているユーザーのみが、ユーザー一覧のページへ移動できるようにする
* 正当なユーザーだけが自分のプロフィール情報を編集できるようにする
* 管理者だけが他のユーザーをデータベースから削除できるようにするまた、以下のような機能の実装には、「誰がログインしているのか」という情報が必須となります。
* 他のユーザーをフォローする機能
* 自分の
Rails6 のちょい足しな新機能を試す101(ActionController::Paramters#transform_keys編)
# はじめに
Rails 6 に追加された新機能を試す第101段。 今回は、 `ActionController::Paramters#transform_keys` 編です。
Rails 6 では、 `transform_keys` がブロックなしで呼ばれた場合、 Enumerater オブジェクトを返すようになりました。Ruby 2.6.5, Rails 6.0.0, Rails 5.2.3 で確認しました。
“`shell
$ rails –version
Rails 6.0.0
“`今回は、実用的な例を思いつきませんでした。
Userの CRUD を作って確認します。 今回は、Rails 5.2.3 の動作から確認していきます。# Rails プロジェクトを作る
“`
$ rails new rails_sandbox
cd rails_sandbox
“`# User の CRUD を作る
“`shell
$ bin/rails g scaffold User name
“`# データベースのマイグレーションを実行する
“`she
EC2にyumでnodejsをインストールしようとしたらできなかった話
#はじめに
右も左も分からない状態で、AWSにRailsアプリをデプロイする過程で躓いたときの話
##epel(?)レポジトリが見つからないと言われエラーになる。
リポジトリが見つからないと言われる。“`:実際のコード
[tatsuki@ip-10-0-0-85 ~]$ sudo yum install nodejs npm –enablerepo=epel
[sudo] tatsuki のパスワード:
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motdError getting repository data for epel, repository not found
“`
##epelリポジトリをインストール
epelリポジトリインストールについて調べ、以下を実行。“`
[tatsuki@ip-10-0-0-85 ~]$ yum -y install epel-release
読み込んだプラグイン:extras_suggestions, langpacks, priorities
【駆け出しWEBエンジニアのためのメモ】WEBアプリ作成の作業フロー_基礎(Rails)
#背景
最近、10年のブランクをへてプログラムを猛勉強中で、特に未経験のWEBプログラミング(Rails)に挑戦しております!TECH::EXPERTにて基礎は学びましたが、どこか「あと少し」な感じで全体像が掴めずにいました。
全体像を把握するためにも、WEBアプリ作成の大まかな作業フローをメモさせていただきました。※フォーム、ログインなど、他の機能は別途記事を作成いたします。
#WEBアプリ作成の作業フロー(概要)
①アプリの雛形作成($ rails _5.2.3_ new ディレクトリ名 -d mysql)
($ bundle install)
②データベース作成($ rails db:create)
③サーバー立ち上げ($ rails s)
④ブラウザでアプリケーションの状態確認( http://localhost:3000 )
⑤ルーティング作成(config/routes.rb を編集)
⑥コントローラーを作成($ rails g controller コントローラー名 で作成)
(app/controllers/コントロ
RailsにcircleCIを構築し、githubと連携してrubocopとrspecテストを走らせる
## はじめに
スクール卒業後黙々とアプリを作っているのですが、開発環境にDockerを導入したということでそのままCircleCIも導入しちゃいました。ちなみに circleCIを導入するには少なからずDockerの知識が必要となってきます。
もしDockerってなんだよ?って人は先にDockerを開発環境に構築してみたほうがスムーズかと思います。RailsにDockerを導入する方法は下記に書いてるので、よかったらみてね!:relaxed:
[作成したRailsアプリケーションでDocker環境構築](https://qiita.com/AK4747471/items/39ddacfde6a235103277)
## circleCIとは?
継続的インテグレーション(デリバリー)サービスです。コミットからデプロイまでのパイプラインを作成し、継続的な統合/配信を使用してソフトウェア開発プロセスを自動化できます。ちょっと難しい用語ですね。
簡単にいうと、githubのpushに合わせて、テストコードを走らせたりしてくれます。
このさらに自動デプロイまでやってくれる環境の
Devise (Warden) + Redis で管理してる Rails のセッションから特定ユーザのものを破棄する
# 何がしたいか
session_store に Redis かつ Devise で認証を管理してる Rails アプリの特定ユーザのセッションをすべて破棄したい。
# どうやるか
セッションストアから対象ユーザのセッション情報を割り出して削除すれば良い。
Railsはセッションストアに `sessions:session_id`(session_idはRailsが発行したsession_id) ってキーでセッション情報を保持する。Wardenはそのセッション情報の中に `warden.user.user.key`(そのまま)ってキーでユーザIDなどの認証情報を保持する。
“`ruby
mapping = ‘user’
user_id = 42# Redisからすべてのセッション情報を抽出
Redis.current.keys(‘sessions:*’).select { |key|
# セッション情報の実態を取り出す
user_hash = Marshal.load(Redis.current.get(key))
# ユーザを特定
user_hash
10月29日 学習進捗状況
# 学習
– ルーティングとはクライアントからのリクエストを受け取り、行き先を定義する
– コントローラーとはデータベースやビューとやり取りをし、クライアントに見た目を返す
– ビューとはクライアントに返す見た目を用意し、コントローラーとやり取りする
– モデルとは、コントローラーがデータベースとやり取りをする際の情報を処理する
– データベースとは様々な情報が保管されており、その中でもテーブルというもので情報ごとに分けて保存している
– file:///Users/tech-camp/Downloads/Rails%E3%81%AE%E5%87%A6%E7%90%86%E3%81%AE%E6%B5%81%E3%82%8C(190925).pdf– マイグレーションファイルとはテーブルの設計図でデータベース内にテーブルを反映させる
(例)create_table:posts do |t| というような記述になる
https://gyazo.com/f3a6d59baa31d46daaa96cbefb28f3af– Rails c でRubyのコードを書くことができるようになる。
【開発日記】薬価検索アプリno.4 〜データベース設計〜
前回の内容はこちら。
[【開発日記】薬価検索アプリno.3 〜設計・画面の設計〜](https://qiita.com/pharma_tech3/items/ec93562bd49b54538da0)開発背景などはこちら
[【開発日記】薬価検索アプリno.1 〜開発概要→企画〜](https://qiita.com/pharma_tech3/items/51c9a670c605098bc3bf)##現在の進捗状況
1.必要な機能の洗い出し
2.必要な画面設計
3.データベース設計 ⬅︎今ココ
4.Railsでアプリケーションの雛形作成
5.大きな機能から順に実装
6.テストコードを書いて動作を担保する
7.リファクタリングして整理する
8.デプロイ#DB設計
どうやって設計するのか、
なぜ、この段階で設計する必要があるのか、
ER図はどうやって書くのか、
これらは他の記事に譲りますね。###大まかな手順
1.管理するデータ(エンティティ)の決定
2.データ属性を決定
3.エンティティ同士の関係性を決定(リレーション)
4.実際にテーブルとして定義する#いざ、
【駆け出しWEBエンジニアのためのメモ】オススメサイトと検索方法(Google,Railsなど)
#背景
最近、10年のブランクをへてプログラムを猛勉強中でして、特に未経験のWEBプログラミング(Rails)に挑戦しております!やはりわからないことが多すぎて大変です^^;
聞ける人が周りにたくさんいるわけではないので、そんな時はネットで調べる必要がありますよね。ただ、ネットには情報が溢れてますし、どの情報を参照すれば良いのか、またどのように取り出せば良いのか困ることもしばしば。
そんな中、信用度の高いオススメの情報源・WEBサイトや、知っておくと便利な検索方法について学びましたので、備忘のため、こちらにメモしておきます(TECH::EXPERTでの学びを参考にしております)。
※他にも見つけたら随時更新させていただきます。#オススメのWEBサイト(Railsなど)
● Qiita(キータ):https://qiita.com/
本記事も掲載させていただいてる、こちらのサイトですね。
日本発の日本で最も有名なプログラマの技術情報共有コミュニティと言われております。
日本語で検索しやすいのが良いですね。
気に入った記事はストックしていつでも見れますし、熱心な方も多いので、
作成したRailsアプリケーションでDocker環境構築
以前技術書を参考にアプリ開発をした時にDockerを少し触ったんだけど、今回は自分で作ったアプリケーションに導入してみたので簡単にまとめようかなと思います。
## バージョン
* Ruby(2.5.1)
* Ruby on Rails(5.2.3)
* MySQL(5.6)
* Docker(19.03.4)
* docker-compose(1.24.1)## 参考にした記事、サイト
[入門 Docker](https://y-ohgi.com/introduction-docker/)
[既存のRailsアプリにDockerを導入する手順](https://qiita.com/kenzoukenzou104809/items/b9e716204e0cd0cea447
)
[DockerでRuby on Railsの開発をしよう](https://qiita.com/saitoeku3/items/b1aa2ae143624e551aea)先人の方々には感謝しかないね・・・:innocent:
## 手順
* Dockerfileの作成(ruby及びrailsの環境を構築
mac で コマンド$ bundle exec rails new アプリ名 を実行した時にエラーが出た話
# 目的
– railsでアプリを作成する時のコマンド`$ bundle exec rails new アプリ名`を実行した時に出たエラーの解決方法をまとめる。
# 経緯
– railsのアプリを新規作成しようとしてコマンド`$ bundle exec rails new アプリ名`を実行した時、ログの最後の五行にエラーらしき文字があった。
– 筆者が作成したアプリ名は「aquariumPlanning」である。(みなさんのアプリ名に読み替えていただきたい。)
– 下記にコマンド実行時のエラーを記載する。“`terminal
$ bundle exec rails new aquariumPlanning –database=mysql
create
create README.md
create Rakefile
create .ruby-version
create config.ru
create .gitignore
create Gemfile
Rails/複数のビューで使うransack検索
久しぶりにブログ書くよ
ちょうど二週間前、スクール課題である某フリマサイトのクローンアプリを終わらせて今まで必死に個人アプリを作ってました。
色々と知見も溜まったかな?と思うしこれから就活なのもあるのでまたブログを書いていこうと思ってます。
今日はgem ransackについて
ransackとは
rails用の検索機能を実装するためのgemです。
簡単にできます。実装は非常に簡単で、現場でも選定されやすいgemだとか。
ちなみに下記技術書に記載されてました。現場で使われがちな技術をチョイスしてくれてる本です。
使い方
さて本
railsでサジェスト機能を実装してみた
railsでサジェスト機能を実装した時のメモ?
autocomplete系のgemが軒並みメンテされていなかったので、jquery-uiで実装していきます。
## 動作環境
rails 5.2.2.1
jquery-ui-rails 6.0.1# やること
`company`属性を持つ`User`というモデルを想定し、
User作成画面で`company`のテキストフィールドに入力した際、
既にDBに存在するデータをもとに候補をサジェストする機能を実装します?こういうやつ↓
![サジェスト.mov.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258211/04b39003-1109-eefa-1fd4-a6c55ca3b318.gif)
## GemfileGemfileに下記を追加し`bundle install`
“`ruby:Gemfile
gem ‘jquery-ui-rails’
“`“`bash
bundle install
“`## applica
Rails5.2 + Vue.js + Dockerでプロジェクトを作成
##はじめに
Railsを使っていてVueも一通り学んだのでRailsとVueを使えるように環境構築してみようと思い勉強してみたことをアウトプット。
Rubyのバージョンは2.5.3
Railsのバージョンは5.2.3
DBはMysqlを使用Railsのプロジェクトを作成するディレクトリを事前に作成しておく
“`$ mkdir <任意のフォルダ名>“`
フォルダを作成したら作成したディレクトリに移動しておく##Docker用のファイルの作成
Dockerのコンテナを作成するためのファイルを作成Dockerfile
docker-compose.yml
Gemfile
Gemfile.lock
の4つのファイルを作成する。“`java:Dockerfile
FROM ruby:2.5.3RUN curl -sL https://deb.nodesource.com/setup_10.x | bash – && apt-get update && \
apt-get install -y nodejs –no-install-recommends &
Rails: validates: 指定した値の時だけ複数カラムでuniquenessを制約を掛ける方法備忘録
# ケース
一つのfugaに対して紐付く複数のhogeの内、is_piyoがfalseであれば幾らでも登録できるが、trueのものは一つしか登録できないようにしたい# コード
“`ruby:app/models/user.rb
class Hoge < ApplicationRecord belongs_to :fuga validates :is_piyo, inclusion: { in: [true, false] }, uniqueness: { scope: :fuga_id, conditions: -> { where(is_piyo: true) }}
end
“`
rubyの予約語を使っちゃったカラム名をfactory_botでテストしたい
例えば `class` というカラムを作ってしまっけれど factory_bot でテストしたいと思ったら…
“`ruby
factory :reservation do
add_attribute(:class) { ‘A組’ }
end
“``add_attribute`!
“Getting Started” に書いてある!
https://github.com/thoughtbot/factory_bot/blob/master/GETTING_STARTED.md#method-name–reserved-word-attributes
railsでfaviconを3ステップで実装してみた
## STEP1
下記ファイルに<%= favicon\\\_link\\\_tag('favicon.ico') %>を追加する~~~html:application.html.erb
Sample <%= favicon\_link\_tag('favicon.ico') %>//この1行を追加する
[省略]
~~~
## STEP2
下記のサイトでアイコンにしたい画像を変換する
https://ao-system.net/favicon/
**favicon.ico**が生成される
## STEP3
**assets/assets/images**配下に**favicon.ico**ファイルを設置する
【rails】かんたんログイン機能導入方法現在railsでポートフォリを作成中ですが、よりスムーズに使ってほしいためにこの機能を導入したくなったので作りました。
若干手抜き感が否めないですが、一応使えます。***これはdivise導入済みで進めていきます。***
####まずはテストユーザーで新規登録します。
“`
name:テストユーザー
email:test@example.com
password:testtest
“`
ログインを簡単にする機能なのでまずは登録ないと始まりません。####view側を編集
もともと`views/devise/sessions/new.html.slim`というファイルがありますが中身を真似て、
`views/devise/sessions/_testuser.html.slim`というファイルを作ります。“`_testuser.html.slim
h2
| かんたんログイン
= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f|
Dockerで起動したRails(DB:postgres)のDBにDBeaverで接続する
# はじめに
Dockerで作り始めたRailsアプリのデータベースをpostgresにしたので
Sequel Proよろしく中身を見に行くか〜!と思って簡単に考えていたら
思ったよりも大変だったのでまとめておく。
~~というより[前の記事](https://qiita.com/krile136/items/24a16cd9d598e75ecc01)のせいで苦労した~~# 環境
– MacOS Mojave 10.14.5
– Rails 5.2.3
– ruby 2.5.7
– postgres 11# 設定
ここでの設定は[DockerでRailsの環境構築してHerokuへデプロイする](https://qiita.com/fuku_tech/items/dc6b568f7f34df10cae7#docker%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)で紹介されている内容と一緒になります。
### Docker-compose.yml
“`yml:docker-compose.yml
v