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

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

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

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

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

#第8章

ログインとログアウトの機能を整えていきたいと思います。

#8.1 セッション

HTTPを使用しているとユーザー情報を一時的に保持ができないので、cookiesを使って、セッションを実装し、ユーザー情報を一時的に保存していきたいと思います。

“`
$ git checkout -b basic-login
“`
トピックブランチを作成します。

##8.1.1 Sessionsコントローラ

newコントローラを作成していきます。

“`
$ rails generate controller Sessions new
“`

ルートを新しく追加します。
newアクションは、ログインフォーム。
createアクションは、postリクエストがあると、ログインを実行。
deleteアクション

元記事を表示

CSSメディアクエリ メモ

“`ruby:application.css


@media screen and (min-width:480px) {
.aaa{
color: red;
}
}
@media screen and (min-width:768px) and ( max-width:1024px) {
.aaa{
color: blue;
}
}
@media screen and (min-width:1024px) {
.aaa{
display: none; /*見せない*/
visibility: hidden; /*divは存在すけど表示なし*/
}
}
“`

“`erb:view/home/top.html.erb
….

ここがレスポンシブ対象

….
“`

元記事を表示

ボタンを条件に応じて非活性にする

#いきさつ
ボタンを非活性にする方法はいろいろあるものだなぁと思ったのでまとめておきます。

#非活性の条件
今回は非活性の条件を下記のようにします。

“`ruby
CONDITION_DAY = 11
Date.today.day < CONDITION_DAY && hoge.blank? #hogeは配列 ``` 今日の日付が1~10日であり、hogeに要素がない場合はボタンを非活性状態にします。 #html.erb ```erb <%# クラスはbootstrapを使用した場合のもの %>

<%= link_to 'ボタンです', {controller: :hugas, action: :piyo}, class: 'btn btn-primary btn-block', id: 'submit-btn' %>
“`

#css
bootstrapを使えばクラスに’disabled’を指定すれば非活性となりますが、
使用していない場合は次のcssを書くものとします。

“`css

a.disabled{
pointer-events: none;

元記事を表示

Ruby on Rails, Vue.js によるモダン WEB アプリケーション 実践編 (その3)

# はじめに

アプリケーションは Rails と Vue.js を想定して、実戦的なアプリケーション動作環境を構築するための方法を段階的に紹介していきます。

Rails と Vue を使ったアプリケーションを初めて開発する場合は [Ruby on Rails, Vue.js で始めるモダン WEB アプリケーション入門](https://qiita.com/tatsurou313/items/4f18c0d4d231e2fb55f4) も参考にしてみて下さい。

# アプリケーションの機能

* [(その1) アプリケーションは冗長構成の Postgres に接続できる](https://qiita.com/tatsurou313/items/b7b0bbabd1d61baccbb3)
* [(その1) アプリケーション、DB は k8s にデプロイされる](https://qiita.com/tatsurou313/items/b7b0bbabd1d61baccbb3)
* [(その1) LE証明書を使う(定期更新できる)](https://qiita.com/tatsurou

元記事を表示

#Ruby や #Rails で 西暦 年月日を 自前でバリデーションする的な処理 ( Date.parse )

日付のstringに対して Date.paras する

# Ruby では require が必要

“`rb
require ‘date’
“`

# 成功ケース

8桁の数字でも ハイフン区切りでも スラッシュ区切りでも

なんとドット区切りもできた

“`rb
[21] pry(main)> Date.parse(‘20200229’)
=> #

[34] pry(main)> Date.parse(‘2020.02.29’)
=> #
[35] pry(main)> Date.parse(‘2020/02/29’)
=> #
[36] pry(main)> Date.parse(‘2020-02-29’)
=> #

元記事を表示

Rails on Docker(alpine)でdocker-seleniumを使わないでSelenium+RSpec+Capybaraでテスト自動化してみる

# Abstract
以前、Rails on Dockerで[docker-selenium](https://github.com/SeleniumHQ/docker-selenium)を利用してSelenium+RSpec+Capybaraのテストを実行する方法をメモしてました。
–> [Rails on Dockerにて、Headless ChromeでSystem Testをやってみた。 – Qiita](https://qiita.com/at-946/items/e96eaf3f91a39d180eb3)

System testは記事でもメモった通り色々と便利。

ただ、Railsアプリケーションが動くコンテナ内でテストを完結することができたのでそちらのメモを残します。

コンテナのベースは以下のRails on Docker(alpine linux)で。
–> [Rails on DockerのQuickstartをalpine linuxでやってみる – Qiita](https://qiita.com/at-946/items/c69a512ea4794174

元記事を表示

railsのエラー: テーブル作成

今日はちょっとデータベース作成をやってみた。

まずデータベースの作成の作りかたを細かいところを
省略して説明すると。

⚪️その1
rails d model モデル名

で前提となるモデルを作成

⚪️その2

出来上がったマイグレーションファイルから

[![Screenshot from Gyazo](https://gyazo.com/6ba6c81f013e8a6873db7a31d39c9015/raw)](https://gyazo.com/6ba6c81f013e8a6873db7a31d39c9015)

こんな感じでテーブルの中身のカラムをかく

⚪️その3

rake db:migarate

でテーブルを作成。

それで本題のエラーは

①bundle exec 未使用

その3で bundle exec rake db:migrate
という形式でやらないとエラーがおきた。

②カラムの追加とrollback

rails generate migration addcolumn+クラス名

で新たにマイグレーションファイルを作成して

def ch

元記事を表示

#Ruby の Faraday とは? get リクエストで https 接続してみる例

# Faraday って何よ

Ralsで使われているけど、ほとんど何してるか知らなかった。

ネットワーク接続まわりの何かだという漠然としたイメージだった。

HTTP クライアントだということさえ知らなかった。生きててごめんなさい。

>Simple, but flexible HTTP client library, with support for multiple backends.

[lostisland/faraday: Simple, but flexible HTTP client library, with support for multiple backends.](https://github.com/lostisland/faraday)

# インストール

“`
gem install faraday
“`

# get リクエストを送ってみる

https アクセスするにも1行で書ける。

“`
Faraday.get(‘https://example.com’)
“`

これだけ。

あー、あの Rails でもよく見るやつだ!

(と思っ

元記事を表示

[Ruby on rails]1ヶ月目の学習まとめ

##執筆の経緯
RailsでAPIを開発し、それを用いてReact Nativeでネイティブアプリを開発するという目的で学習を開始しました。
具体的には「**物忘れ防止アプリ**」を作成します。
場所と通知をリンクさせるもので例えば以下のような挙動を実現させます。

ex
スーパーに行く前に買い物リストをメモして、スーパーの位置座標を指定する。
買い物に行きスーパーに到着すると、登録した位置情報より通知が来て買い物リストを表示する。

こんなアプリあったらめちゃくちゃ便利だと思いませんか?
僕自身、「切れてしまったマヨネーズを購入しなきゃ!」と買い物に行く前は考えていても
スーパーに着く頃には頭になくて、買い物終えた帰宅途中に「あっ!、マヨネーズ!!!」
とうっかりすることがあるんですよ。。。
「俺ってにわとりなのかよ、、、」って自己嫌悪したくないし、
仕方なく近くのコンビニで割高のマヨネーズを買いたくもない!
そんなこんなで「物忘れ防止アプリ」の作成を志したのです。

記事を書くことでアウトプットすることが主な目的で、1月おきくらいに学習の進捗を綴っていきます。
しかし、同じよ

元記事を表示

Rails RCV作成 初期

posts_controllerを作成するとして

① ターミナルより
$ rails g controller posts

② コントローラーファイルができるのでインデックスのメソッド追記

posts_controller.rbより

1 class PostsController < ApplicationController 2 def index 3 end 4 end ③ ビューにpostsファイルができているのでindex.html.hamlのファイルを新しく作成しそこに確認用に適当な文字列を入れる (例)Hello world!    等 ④ ルーティングの設定を行う、root_pathにアクセスした時post#indexを呼び出す routes.rb Rails.application.routes.draw do root to: 'posts#index' end

元記事を表示

RSpec+capybara+selenium+chromedriverでブラウザ自動テスト!!

#はじめに
仕事でブラウザテストやったので自作アプリにも入れておきますううううう。

#環境

– ruby 2.5.0
– Rails 5.0.7.2
– rspec-rails 3.9.0
– capybara 3.29.0
– selenium-webdriver 3.4.4

#Gem

“`ruby:Gemfile
group :test do
gem ‘rspec-rails’
gem ‘capybara’
gem ‘selenium-webdriver’
end
“`
“`ruby:ターミナル
$ bundle install
“`
“`ruby:ターミナル
$ rails g rspec:install
“`
“`ruby:ターミナル

create .rspec
create spec
create spec/spec_helper.rb
create spec/rails_helper.rb
“`
こんな感じでファイルできます。

#chromedriverの導入

###Homeb

元記事を表示

Ruby on Rails インストール、アプリケーション作成、サーバーを立てるまで

Webアプリケーション開発のフレームワークである、
Ruby on Railsの導入してみたいと思います。

# 前提
●Rubyが導入されていること
●Rubyのバージョンが2.2.2以上であること(Rails5系を使うため)

#Ruby on Railsインストール
1:コンソールを開く

2:Railsインストールコマンドを記入

“`
gem install rails -v “5.2.3”
“`

3:確認する

“`
rails -v
“`

#アプリケーション作成
アプリケーション作成は、コンソールを開き、

“`
rails new アプリケーション名
“`

入力すると、アプリケーションが作成されます。

アプリ名「test_app」を作成したいと思います。

“`
rails new test_app
“`

入力した後、ディレクトリを移動し、lsコマンドを入力、
作成されたフォルダ群が見れると、作成が成功したこととなります。

“`
cd test_app
ls
Gemfile app db public vendor
Gemfile

元記事を表示

オブジェクトの更新 save, update_attributes

## オブジェクトの更新
### save

“` save.rb
user = User.new(name: “new”, email: “hoge@example.com”)
user.save
“`
新規作成したオブジェクトを保存
検証に失敗すると”false”を返す

### update_attributes

“` update_attributes.rb
user.update_attributes(name: “qita”, email: “foo@bar.com”)
“`

既にあるオブジェクトを更新
検証に失敗すると”false”を返す

### update_attribute

“` update_attribute.rb
user.update_attribute(name: “qiita”)
“`

特定の要素のみ更新し,検証を回避する

## 参考
[第6章 ユーザーのモデルを作成する – Railsチュートリアル](https://railstutorial.jp/chapters/modeling_users?version=4.2#sec

元記事を表示

Rails on DockerのQuickstartをalpine linuxでやってみる

# Abstract
Rails on DockerはDocker docsにサンプルアプリが載っています。
–> [Quickstart: Compose and Rails | Docker Documentation](https://docs.docker.com/compose/rails/)

ただ、Dockerイメージはサイズを軽量化するのがよしとされており、そのためにalpine linuxを使うというのはよくある話のようです。ので、上記のQuickstartをalpineで実施するメモです。

# Define the project
まず、Dockerfileを作ります。Quickstartでは以下の内容。

“`dockerfile:Dockerfile(Quickstart版)
FROM ruby:2.5
RUN apt-get update -qq && apt-get install -y nodejs postgresql-client
RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile /myapp/Gemfil

元記事を表示

RubyでWebフレームワークを自作する

# RubyでWebフレームワークを自作する
## 動機
Webフレームワークを使ってアプリケーションを作成することは良くあるが、実際にその中身やどういった動きをするのか知りたい。
今回は、RailsライクなMVCフレームワークを自作します。

## Rackで作成していく
ディレクトリを作成して、 `bundle init` でGemfileを作成します。

“`zsh
❯ mkdir my_framework
❯ bundle init
“`

`rack`をインストールします。
また、デバッグしやすくするために `pry` もインストールします。

“`ruby:Gemfile
# frozen_string_literal: true

source “https://rubygems.org”

git_source(:github) {|/repo_name/| “https://github.com/#{/repo_name/}” }

gem ‘rack’
gem ‘pry’
“`

“`zsh
❯ bundle install
“`

## Rackとは

元記事を表示

RailsアプリでELB(AWS)をエンドポイントに常時SSL化したらアプリにアクセスできなくなった

一度デプロイに成功したアプリケーションが常時SSL化をしたところ、pcからならアクセスできるけどスマホからだとアクセスできない、なんてことになりました。

ものすっごい初歩的なところで1日かけてしまったので、自分への戒めも含めて投稿しようかと思います。

## 前提

・EC2インスタンスランニング状態(ポート:HTTP 80を開き、ソースはロードバランサのセキュリティグループを指定)
・ロードバランサのターゲットグループのステータスはHealty(ポート:HTTP 80を設定)
・ロードバランサのDNS名にはAレコードが設定されている
・ロードバランサのリスナー:HTTPS 443 (SSL認証書も紐づいている)
・コンソールからec2-userにログイン可能
・本番環境内のproduction.logにはFatalやErrorの記述なし
・Capistranoの自動デプロイにエラーなし

##### しかしアプリにアクセスできたりできなかったりする!!

## 結論

##### ELBのセキュリティグループインバウンドでソースにマイIPを指定していた

つまり、自宅のWifiな

元記事を表示

Rails6のActionDispatch::HostAuthorizationとELBのヘルスチェックの共存

Rails6の[ActionDispatch::HostAuthorization](https://github.com/rails/rails/pull/33145)設定と[okcomputer](https://github.com/sportngin/okcomputer)を利用した `Nginx – Rails – RDS` という経路のヘルスチェックの共存に少しコツが必要だったので記事にしました。

## ActionDispatch::HostAuthorization
https://github.com/rails/rails/pull/33145
Rails6から追加された、[DNSリバインディング攻撃](https://en.wikipedia.org/wiki/DNS_rebinding)から保護する新機能です。

下記のように設定することで、指定したホスト以外からのアクセスはエラーとなります。

“`ruby
Rails.application.config.hosts << "product.com" ``` ## okcomputer https://

元記事を表示

[メモ]Railsで特定のページで条件分岐する方法

例えば、page1というページの場合に特定の処理を行いたい場合

“`
<% if request.path.include?('page1') %>
[処理を書く]
<% end %>
“`

元記事を表示

video_tagで横幅いっぱいに動画を挿入する方法

#はじめに
video_tagで横幅いっぱいに自動再生で動画を流す。
備忘録として残します。

#つまずいたところ
– 動画のファイルの置所
– 自動再生
– 横幅を画面いっぱい、縦幅は指定

#実装手順
app/assetsの直下にvideosフォルダを作成。
videosフォルダ内に背面で流したい動画を入れる。
(ここでは、test_video.mp4という動画ファイルを入れました。)

次にvideo_tagを使って動画を表示

“`index.html.haml
.video-content
= video_tag “test_video.mp4”, loop: true, autoplay: true, muted: true
“`

object-fit: cover;をつけることで、動画の横と縦の比率を変更できた。
動画も崩れないで再生されている。

“`index.scss
.image-content{
height: 80vh;
z-index: 1;
video{
width: 100%;
height: 100%;

元記事を表示

MySQL かんたんにテーブルのid番号を1からリセットする方法

# MySQLのid番号 リセット方法

MySQLには初期設定でauto-increment機能が設定されています。
簡単にいうと「自動連番機能」です。

ただ番号間にあるレコードを消すとそのid番号のみが欠番となったまま、無視され、最後の番号から連番されてしまうため、テーブル管理において不都合なことが生じる場合があります。

そこで本記事では
###「id番号を1から振りなおす方法」をご紹介いたします。

方法のみ知りたい方は以下のリンクをクリック
### [方法へジャンプ](#方法)

## 状況:
たとえばこんな感じのテーブルがあり、id番号が順番に振られています。

| id | name |
|:—:|:———-:|
| 1 | ANA |
| 2 | DELTA |
| 3 | JAL |
| 4 | UNITED |
| 5 | VANILA |
| 6 | PEACH |

しかし、いくつかレコード削除などによって欠番が生じると下のような順番にな

元記事を表示

OTHERカテゴリの最新記事