- 1. Ruby on Railsで簡単なアプリを作成
- 2. untilで繰り返し
- 3. テストコードの環境設定をわかりやすく解説
- 4. 何とかしてRailsで有効な日付か判定する
- 5. 【ruby】変数のスコープとかselfとかを確認する メモ
- 6. 応用カリキュラム 04 ruby正規表現
- 7. 非同期処理に便利なremote: tureオプションを利用する
- 8. 【初学者向け】config/deploy.rb に環境変数を仕込む方法
- 9. RubyistのためのPython環境ツール比較早見表
- 10. #VsCode の正規表現置換で rspec の let 記法を #Ruby の変数代入に置換する例
- 11. 【Selenium】文字入力中にカーソルが別のフォームに移動してしまう
- 12. Rspecでdrag&dropをテストする
- 13. rubyでgmailからメールを送信する
- 14. 今週のRuby学習 変数から条件分岐まで
- 15. whileで繰り返し
- 16. Rubyで連立一次方程式
- 17. kintone REST API client for Ruby を使ってみる
- 18. 【Rails】RuboCopの基本的な使用方法と出力の見方
- 19. Railsでポートフォリオを作ってみよう! vol.4 (RSpec・FactoryBot編 後編)
- 20. erbで、複数行コメントアウト
Ruby on Railsで簡単なアプリを作成
##はじめに
以下の記事を参考に、手を動かしながら簡単なTODOアプリを作成する過程を記録していきます。
[Ruby on Railsで簡単なToDoアプリを作ってみる – Reasonable Code](https://reasonable-code.com/rails-todo/)
##基盤の作成
###プロジェクトを作成する
“`
$ rails new todo-app
“`
なぜか勝手にgitでの管理が始まりました。まあ別に不都合はないので、コミットしておきます。“`
$ git add .
$ git commit
“`###サーバーを起動する
“`
$ rails s
“`###Modelを作成する
RailsではModelを使ってデータベースとやりとりします。基本的にSQL文は書きません。
Model名は頭文字が大文字で、常に単数形です。
デフォルトで「id、created_at、updated_at」の3つのカラムが作られ、ここではさらにstring型のtitleというカラムを追加します。“`
$ rails g model Task
untilで繰り返し
初心に戻って基本を学ぶシリーズ第二弾
今日はuntil編です。彼はアマノジャクなのでfalseの時のみ中の処理を実行します。
#使い方
“`ruby
until 条件式 do
処理
end
“`#例
“`ruby
num = 50
until num < 0 do puts num num -= 1 end ``` 50から0まで出力されます。 ポイントは0が出力されるということです。 0はfalse,-1からtrueです。 #途中で処理を抜けたい時はbreak 毎度おなじみbreakさんの登場です。 ```ruby num = 50 until num < 0 do puts num num -= 1 if num == 25 break end end ``` 結果は50から26まで表示されます。
whileとuntil
時と場合によって使い分けられるエンジニアになりたいものです。ではまた!
テストコードの環境設定をわかりやすく解説
プログラムを意図した通りに動くことを確かめるために、テストコードを使います。
**プロダクションコード : 本番環境で実際に作動するプログラム**
**テストコード : テストを行うために行うプログラム**
このテストコードの方を一緒に勉強していきましょう!
#概要
・用意するgem
・Rspecを用意する
・Rspecが正しく設定されているか確認する##用意するgem
**Railsでは、Rspecという言語を使用します。**
**そして、rspec-railsというgemを使用します。**
web_consoleをいうgemは、テスト環境で動かすと不具合が起きるgemなので、
developmentの環境下に移動しましょう!Railsで開発したアプリにgemをインストールします。
“`Gemfile.
group :development, :test do
gem ‘rspec-rails’
endgroup :development do
gem ‘web-console’
end
“`
bundle installを実行!####テスト
何とかしてRailsで有効な日付か判定する
# 多分、悪手。
ほんとはバリデーションで弾いたりすべきなんでしょうね。・フォームから0~8桁の数字が送られてくる
・誕生日として登録したい、 **1940-12-23** という形式で。“`ruby
begin
if params[“user”][“birthday”].to_date
end
rescueelse
unless params[“user”][“birthday”].to_date == nil
正当な日付の場合の処理
end
end
“`# 内容について
無効な日付(未入力含む)なら.to_dateしてもdate型に出来ないので
例外に入り、先に進まない。
それに該当しなければ、例外処理の中のelseに入り処理が実行される。# いい書き方したい
せっかくRoRを使ってるんだから、
正しい使い方をしたいですねえ。
自分で見て改めて無茶苦茶だなあと思ったので、
まともな書き方を勉強しようと思います。。。
【ruby】変数のスコープとかselfとかを確認する メモ
## クラス変数
“`rb
#クラス変数class Test
@@number = 1#インスタンスメソッド内で呼び出す
def instance_method
p @@number
end#クラスメソッド内で呼び出す
def self.class_method
p @@number
end#initializeメソッド内で呼び出す
def initialize
p @@number
end#クラス変数を更新
def overwrite
p @@number = 2
end#クラスメソッドでクラス変数を更新
def self.overwrite2
p @@number = 2
end#クラス定義内で呼び出す
p “クラス定義内 #{@@number}”
end#initializeメソッドで実行
test = Te
応用カリキュラム 04 ruby正規表現
##sub(≒replace)
文字列の指定部分を別の文字列に置換。
##gsub
文字列の指定部分を全て別の文字列に置換。“`.rb
str = “aaabbb”
str.sub(/bbb/,”BBB”)
# aaaBBBstr.gsub(/b/,”B”
” aaaBBB
“`
##match
検索したい文字が含まれているかどうか。
見つかれば、検索文字リピート
見つからないなら、nil“`.rb
str = “aaabbb”
str.match(“ab”)
# ab
“`##検索条件
– [a-z] a,b,c,d・・・x,y,zのいずれかの文字にマッチ。
– \d 数字にマッチ
– {n, m} 直前の文字が最低n回、最高m回出現
– i 大文字・小文字を区別しない
– . あらゆる1文字
– 直前文字の1回以上の繰り返し複合条件可。
非同期処理に便利なremote: tureオプションを利用する
####remote: tureの概要
・非同期処理を行ないたいに使う
・link_to もしくは button_to で利用可能。
・button_toで可能ということは、submitでも可能?—
Railsには、Ajax機能が組み込まれている
remote: ture オプションで非同期処理が可能。リクエストが、HTML形式ではなくjs形式なる(ページ遷移をしなくなる)
参考URL:https://qiita.com/__tambo__/items/45211df065e0c037d032####メリット
Railsが自動的にAjaxでサーバにリクエストを送信してくれるため、AjaxのJavascriptコードを自分で書く必要がない
####使い方
ex.)link_to の場合
<%= link_to post_favorite_path(@post),method: :delete do, remote: true %>
こんな感じだけど動作しない・・・ぐぬぬぬぬぬぬぬぬぬ
【初学者向け】config/deploy.rb に環境変数を仕込む方法
Capistrano + unicorn を用いた自動デプロイで好きな環境変数を
デプロイ先のサーバーにも、githubにも記載なしで送り込む方法です。
basic認証のアカウント名とパスワード設定など、環境変数を使う際にご活用ください。“`config/deploy.rb
set :default_env, {
(デプロイ先での環境変数名): ENV[“デプロイ元の端末の環境変数名”],
例:
BASIC_AUTH_PASSWORD: ENV[“BASIC_AUTH_PASSWORD”]
}
“`上記の記載をすることで、bundle exec cap production deployをすると
デプロイ端末の環境変数の値がデプロイ先の環境変数の値になります。#### 同じ環境変数をデプロイ先で設定していた場合、上記の記述の値が優先されますのでご注意ください。
RubyistのためのPython環境ツール比較早見表
# はじめに
Pythonのバージョン/ライブラリ管理は色々あってややこしい。
「Rubyで言うと?」と考えるとRubyistにはわかりやすそうなので、独断で現在主流のPython環境管理をまとめてみる。# 早見表
| 対象 | Ruby| Python |
| — | — | — |
| バージョン | rbenv | [pyenv](https://github.com/pyenv/pyenv) |
| ライブラリ | gem | pip |
| ライブラリ依存/仮想環境 | bundler | [pipenv](https://github.com/pypa/pipenv) |# バージョン管理
Rubyistには同じみ `rbenv`、Pythonにも`pyenv`がある。使い方も基本的には同じ。
rbenvにはruby-buildというサブモジュールが必要だが、pyenvでは必要無い。# ライブラリ管理
`pip` はPython 2.7.9/3.4以降から標準付属。# ライブラリ依存/仮想環境
Pythonはたくさんあるが、`Bundle
#VsCode の正規表現置換で rspec の let 記法を #Ruby の変数代入に置換する例
# Find
“`
*let\(:(\w+)\) *\{ *(.+?) *\}
“`# Replace
“`
$1 = $2
“`# Before
“`rb
let(:user) { create(:user, :man) }
let(:book) { user.book }
“`# After
“`rb
user = create(:user, :man)
book = user.book
“`# 操作の例
コマンドパレットで Replace を選んで、C+Enter で全て置換。
![image](https://user-images.githubusercontent.com/13635059/69098748-8cb3f000-0a9c-11ea-8a74-4dc82f5743ec.png)
![image](https://user-images.githubusercontent.com/13635059/69098753-8faee080-0a9c-11ea-9a48-7d7dc79319df.png)
![imag
【Selenium】文字入力中にカーソルが別のフォームに移動してしまう
# 背景
次のようにして、全画面コピーした内容をテキストエリアに入力する処理を作っていました。“`ruby
js = ”
document.execCommand(‘SelectAll’);
return window.getSelection().toString();
”
str = driver.execute_script(js)
driver.find_element(:id, ‘hoge’).send_keys(str)
“`
ところが、入力中に別のフォームに移ってしまい、入力がめちゃくちゃになってしまいました。# 結論
`send_keys`で入力する前に、`replace()`関数を利用して`\t`を置き換える。“`ruby
js = ”
document.execCommand(‘SelectAll’);
return window.getSelection().toString().replace(/\t/g, ‘ ‘);
”
str = driver.execute_script(js)
driver.find_element(:
Rspecでdrag&dropをテストする
# はじめに
Rspecでdrag&dropのテストのやり方についてまとめておきます。#結論
1.Google Chromeをサーバーにインストール
2.selenium_chrome_headlessを使用する設定を行う
3.drag_toメソッドを使用する
これにより、テストを行うことができました。#環境構築から、テスト実行まで
今回実行できるか確認した手順です。DockerでRuby on Railsの環境構築を行うためのステップ【Rails 6対応】@kodai_0122
(https://qiita.com/kodai_0122/items/795438d738386c2c1966) を参考にさせていただき、テスト環境の構築を行います。詳しくは、上記のリンクの記事にまとまってますので、ご確認ください。
“`
$ mkdir spec_test_app
$ cd spec_test_app
“`“`text:Dockerfile
FROM ruby:2.6.5
RUN apt-get update -qq && apt-get install -y
rubyでgmailからメールを送信する
今回は、rubyでメールを送信するプログラムの例を書いていこうと思います。
# 注意点
スクリプト等でgmailを使用する際は、アプリパスワードが必要となります。
2段階認証を設定して、このパスワードを取得してから次に進んでください# メールの送信サンプル
“`mail.rb
require “gmail” #今回使うgem#自分のメールアドレス
MY_ACOUNT = “hoge@hoge.com”
#自分のアプリケーションパスワード
PASSWORD = #あなたのアプリケーションパスワードを入れてくださいgmail = Gmail.new(MY_ACOUNT, PASSWORD)
ret = gmail.deliver do
#宛先
to “fuga@fuga.com”
#宛名
from “hoge”
#タイトル
subject “送信テスト”
#本文内容
text_part do
body “this is a test-mail.”
end
end
gmail.logout
“`MY_ACC
今週のRuby学習 変数から条件分岐まで
先週に引き続き、今週もRubyについて学んでいる。
先週の後半で、Rubyから気移りして昔やっていた、Swiftの勉強に逃避していた。
新しい言語を学ぶのは面白いけど、学習コストとカロリーが結構かかるので他の言語へと行きがちである。
最低でも、10時間くらいは初期に投資しなくてはいけないのかな。
早く物を作りたいという欲求で少し焦るが、今週はチュートリアルで精一杯な気がする。##今週の内容
1. 変数定数について
2. オブジェクトについて
3. 数値オブジェクトについて
4. 文字列オブジェクトについて
5. ? や ! がついたメソッドを使おう
6. 配列オブジェクトを使おう
7. ハッシュオブジェクトを使おう。
8. オブジェクトを変換
9. %記法を使う
10. 書式付きで値を埋め込む
11. ifで条件分岐をする##変数について
変数はプログラミングをやっている人ならば理解しているはず。###変数は、英小文字。
> msg = “Hello world”
> puts msg###定数は、英大文字。
※
> VERSION = 1.1
> puts VERS
whileで繰り返し
初心に戻って基本を学ぶシリーズを始めます。
初回のゲストはwhileさんです。whileさんは条件式がtrueの場合のみ中の処理を実行してくれます。
#使い方
“`ruby
while 条件式 do
処理
end
“`#例
1から100まで出力したいとき
“`ruby
num = 1
while num <= 100 do #100以下ならば puts num #numを出力 num += 1 #numに1を足す end ``` #途中で処理を止めたいとき breakを使います。 ```ruby num = 1 while num <= 100 do #100以下ならば puts num #numを出力 num += 1 #numに1を足す if num == 50 #numが50のとき break #処理を抜けるよー! end end ``` numが50になったら処理を抜けます。 結果は1から49まで出力されます。
ではまた!
Rubyで連立一次方程式
Rubyで連立一次方程式を解く方法を2つ紹介する。
# Ruby標準ライブラリ `Matrix` を使う
Rubyの標準ライブラリにある`Matrix`クラスを使う方法。標準ライブラリにあるので追加でgemをインストールすることなく使える方法。
(参考: [Ruby2.2 ではアレが死ぬほど使いやすくなるの!](https://qiita.com/gogotanaka/items/912d1b74aa702588fcf7) )“`ruby
require ‘matrix’
m = Matrix[ [1.0, 2.0], [1.0, 3.0] ]
# => Matrix[[1.0, 2.0], [1.0, 3.0]]
b = Vector[1.0,0.0]
# => Vector[1.0, 0.0]
m.lup.solve(b)
# => Vector[3.0, -1.0]
“`# `Nmatrix` gemを使う
https://github.com/SciRuby/nmatrix
`gem install nmatrix` でインストールする。
“`ruby
kintone REST API client for Ruby を使ってみる
kintoneのSDKを使って、コマンドラインからkintoneにアクセスしてレコードを取ってきたりする時のメモです。
# はじめに
kintoneのAPIにアクセスする Ruby用のSDK [kintone REST API client for Ruby]https://github.com/jue58/kintone を使ってみたときのメモです。
# 動作環境
* mac OS10.14.6
* Ruby 2.6.3
* Homebrew 2.1.16
* rbenv 1.1.2
* Pry version 0.12.2 on Ruby 2.6.3# 環境設定メモ
上記環境を構築する際のメモです。
* [Homebrew]https://brew.sh/index_ja をインストール
* [rbenv]https://github.com/rbenv/rbenv#homebrew-on-macos をインストール
* rbenvでRubyをインストール### rbenv チートシート
* `rbenv –help` 全体ヘルプ表示
* `rbenv v
【Rails】RuboCopの基本的な使用方法と出力の見方
## はじめに
RubyのLinterツールであるRuboCopについて以下内容をまとめました。– インストール方法
– 基本的な使用方法
– 出力の見方
– 規定の設定(他記事へのリンク)保守性が高く、キレイなコードを書けるようになっていきたいです:writing_hand:
## この記事が役に立つ方
– RuboCopを使ったことがない方## この記事のメリット
– RuboCopが使えるようになる
– 最低限出力が読めるようになる## 環境
– macOS Mojave バージョン10.14.6
– シェル:zsh
– Ruby 2.6.3
– Rails 6.0.1
– RuboCop 0.76.0## RuboCopとは?
公式サイトはこちらです。
[Home – RuboCop: The Ruby Linter that Serves and Protects](https://rubocop.readthedocs.io/en/latest/)Railsでポートフォリオを作ってみよう! vol.4 (RSpec・FactoryBot編 後編)
前回までで一通りの導入から設定は完了した為、今回はテストの実装を行う。
今回はRailsTutorialの流れでは第6章を実装するが、簡略しているところがほとんどなので、もっと細かく知りたい人は調べてみてほしい。#テストの実装
テストを実装する。第6章はUserモデルのバリデーションについてのテストが多いためそこをピックアップして実装する。## FactoryBotを使ってみよう
前回導入を行なったFactoryBotを使い、テストユーザーのセットアップを行う。“`
$ docker-compose run web bin/rails g factory_bot:model user
“`を実行後user.rbが作成されるため
“`spec/factories/users.rb
#現在のFactoryBotのVerでは以下の書き方は非推奨となっている
#後ほど詳しく説明する
FactoryBot.define do
factory :user do
name “ExampleUser”
nickname “Example”
seq
erbで、複数行コメントアウト
## コード
“`erb
<% =begin %>コメントアウトされている
<% =end %>
“`## 説明
=の部分を左にくっつけないといけない。
忘れてしまう事があったので、備忘録として。