- 1. 文字列の定義
- 2. 分割する
- 3. 変換する
- 3.0.1. Railsを使って、イベントのイマココを管理するサービスをリリースした話
- 3.0.2. ストックすることの大切さと、一歩踏み出す大切さ
- 3.0.3. [Rails] VSCodeでSolargraphを使おうとしたら、Bundlerが無いというエラーが出たときの解決策
- 3.0.4. Ruby on Railsの要点【ディレクトリ、コマンド編】
- 3.0.5. Rails6のWebpackにjQueryとBootstrapを導入する手順
- 3.0.6. [Ruby]どうしても配列の中身のハッシュを平坦化させたい
- 3.0.7. railsで複数モデルを保存するときにall?ではなくinject
- 3.0.8. 【Ruby】if文の条件分岐
- 3.0.9. Rails6 のちょい足しな新機能を試す106(カラム名編 Part2)
- 3.0.10. ||= とは?
- 3.0.11. 【Ruby】scanメソッドでフォーマットがバラバラの年月日情報を抜き出す
今週の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 %>
“`## 説明
=の部分を左にくっつけないといけない。
忘れてしまう事があったので、備忘録として。
三項演算子
#複数行のif文を一行で書くことができるすぐれもの。
`(条件式) ? (trueの場合の処理):(falseの場合の処理)`
—
例)
“`ruby
if score > 60
puts “合格”
else
puts “不合格”
end
“`このif文が
“`ruby
puts score > 60 ? “合格”:”不合格”
“`こうなる。
ではまた!
【Ruby】文字列で使用出来るメソッド調べてみました
※初めての投稿ですm(__)m
文字列の定義
文字列(String)の指定はダブルクオーテーション(“”)で文字列を囲うことで定義出来ます。
“`ruby:sample.rb
変数 = “文字列”
“`分割する
**split(文字列の分割)**
“`ruby:sample.rb
string = “pockemon, ruby, sapphire”
p string.split(“,”)
=> [“pockemon”, ” ruby”, ” sapphire”]
“`変換する
**capitalize, capitalize!(先頭の文字を大文字に変換する)**
“`ruby:sample.rb
string = “poCkemon, pikachU”
p string.capitalize
=> “Pockemon, pikachu”
“`**reverse, reverse!(文字列を反転する)**
“`ruby:sample.rb
string = “pockemon”
p string.
Railsを使って、イベントのイマココを管理するサービスをリリースした話
# はじめに
サラリーマンをしている傍、自宅で個人開発をしている「[にゅ〜ぶる(@newburu)](https://qiita.com/newburu)」です。
新しいサイトを立ち上げるたびに、何かしらアウトプットしていこうと思い、
「[BLOG](http://blog.newburu.com/)」と、ここQiitaに投稿していきます!# こんなサービス作りました
イベントの進捗(イマココ)を管理できるサービスを作りました❗️❗️
その名も、「[イマココアラート](https://imakoko-alert.com/)」
よかったら使ってみてくださいね❤️#拡散希望
???サービスリリース???イベントのイマココを管理・
ストックすることの大切さと、一歩踏み出す大切さ
# はじめに
サラリーマンをしている傍、自宅で個人開発をしている「[にゅ〜ぶる(@newburu)](https://qiita.com/newburu)」です。
新しいサイトを立ち上げるたびに、何かしらアウトプットしていこうと思い、
「[BLOG](http://blog.newburu.com/)」と、ここQiitaに投稿していきます!※書いていたのをすっかり忘れて半年たって公開…笑
# 作ったサイトの紹介
今回作ったサイトは、こちら。
「[JobLvマネージャー](https://joblv-manager.herokuapp.com/)」です。自分のJob(職業)を管理、LvUpをしながら、Twitterと連携(現時点では、名前変更)することが出来ます。
[Rails] VSCodeでSolargraphを使おうとしたら、Bundlerが無いというエラーが出たときの解決策
# 環境
+ VSCode v1.40.1
+ (extension) Ruby 1.1.2
+ (extension) Ruby-Solargraph 0.21.1
+ Ruby 2.5.1
+ rbenv 1.1.2
+ Rails 5.2.2.1# 状況
普段はGoを書いているのですが、急遽別案件でrailsを書くことになり、VSCodeで開発環境を構築しようとしました。
補完のために「Ruby-Solargraph」というVSCodeの拡張を入れたところ、“`
/Users/me/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems/dependency.rb:312:in `to_specs’: Could not find ‘bundler’ (1.16.3) required by your /Users/me/proj/Gemfile.lock. (Gem::MissingSpecVersionError)
To update to the lastest version installed on your
Ruby on Railsの要点【ディレクトリ、コマンド編】
Railsチュートリアルを終えたので、学んだことを整理していきたいと思います。
##ディレクトリ構成
よく使うファイル、ディレクトリだけを抜粋します。“`
app
├── assets/ # 画像ファイル、CSS、Javarcriptなど
├── controllers/ # コントローラー
├── helpers/ # ヘルパー関数
├── mailers/ # メール送信の設定
├── models/ # DBの各テーブルに紐づいた設定(関数、バリデーションなど)
├── uploaders/ # ファイルアップロード周りの設定
├── views/ # ビューファイル
config
├── routes.rb # ルーティングの設定
db
├── migrate/ # DBの構成変更に関するファイル
├── seeds.rb # DBに入れるデータ
public/ # 404エラーページなど
te
Rails6のWebpackにjQueryとBootstrapを導入する手順
Rails6からWebpackが標準導入されるようになりました。
今までjQueryやBootstrapを導入するには、それぞれのGemをインストールして`app/assets/javascripts/application.js`や`app/assets/stylesheets/application.scss`で呼び出すという手順でしたが、これからはWebpackを使って管理していくのが正しい道のようです。#前提
Rails6を使っている想定なので、Webpackerのインストール手順は省略します。#諸々のインストール
以下のコマンドでインストールします。“`shell
$ yarn add bootstrap jquery popper.js
“`正常にインストールされたかは`package.json`で確認できます。
#jQueryの導入手順
`app/javascript/packs/application.js`以下を追記します。“`javascript
require(“jquery”)
“``config/webpack/environ
[Ruby]どうしても配列の中身のハッシュを平坦化させたい
# はじめに
**配列とハッシュが混合したもの**を扱う際に、少々手こずったのでメモ程度に書き起こしておく。
結果的に少々泥臭さのあるコードとなってしまった気がするので、より自然で簡潔なものがあれば、ご指摘していただけると助かります。# 配列の中のハッシュを平坦化
今回躓いていたのは、**配列の中のハッシュの平坦化**
どうにかして、①の配列を②の配列にしたい。“`.rb
# ①の配列
[
[{“id”=>1}, {“name”=>”Bob”, “gender”=>”m”, “birthday”=>”2010/01/01”}],
[{“id”=>5}, {“name”=>”Tom”, “gender”=>”m”, “birthday”=>”2011/11/01”}],
[{“id”=>8}, {“name”=>”Alice”, “gender”=>”w”, “birthday”=>”2012/02/01”}]
]
“`“`.rb
# ②の配列
[
[{“id”=>1, “name”=>”Bob”, “gender”=>”m”, “birthday”=>
railsで複数モデルを保存するときにall?ではなくinject
Railsで複数モデルを同時に保存する必要がある際、トランザクション内で
“`rb
ActiveRecord::Base.transaction do
保存成功時の処理 if models.all?(&:save)
raise “error”
end
“`みたいに書きたいことがあったが、all?はある要素の`save`がfalseを返した場合、それ以降の要素についてsaveメソッドを実行しない。saveメソッドの実行によりエラーメッセージを取得したいような場合、全ての要素について実行してもらう必要がある。今回は以下のように書いた。
“`rb
ActiveRecord::Base.transaction do
保存成功時の処理 if models.inject(true){|result, elem| result && elem.save }
raise “error”
end
“`もっと良い書き方があれば是非ご指摘ください。
【Ruby】if文の条件分岐
# if文説明
“`ruby:公式.rb
if 条件
ifで設定した条件が成立したときの処理方法
end
“`【問】
もしもおさいふに500円以上入っていたら
“マンガを買って帰ろう♪”
とif文で表示させるには?
おさいふは 変数wallet とし財布の中身は700円とする。【答】
“`ruby:if文.rb
wallet = 700
if wallet >= 500
puts “マンガを買って帰ろう♪”
end
“`ターミナルでは
↓↓↓“`ターミナル.
マンガを買って帰ろう♪
“`よし!ちゃんと表示されてるな。
じゃあもしさいふに300円しかなかったらどうなるんだろう???:thinking::thinking::thinking:“`ruby:if文.rb
wallet = 300
if wallet >= 500
puts “マンガを買って帰ろう♪”
end
“`“`ターミナル.
〈ユーザー名〉MacBook-Air:desktop 〈ユーザー名〉$
“`うん、そりゃそうだ。
だってお金足りないと
Rails6 のちょい足しな新機能を試す106(カラム名編 Part2)
# はじめに
Rails 6 に追加された新機能を試す第106段。 今回は、 カラム名編 Part2です。
Rails 6 では、 `pluck` や `order` で指定するカラムが、別名を持っている場合や引数一つまたは0の関数の場合も `Arel.sql()` で囲いなさいという警告が出なくなりました。
なんでもかんでも警告を出すより、本当に問題になりそうな場合に限定して警告を出す方が、警告の効果があるだろうということのようです。この変更に伴い、 Rails 5.2.3 で出ていたRails 6.0 では禁止となると `DEPRECATION WARNING` が出ていたところが、Rails 6.0 で禁止にならず、Rails 6.1 に持ち越されました。
Ruby 2.6.5, Rails 6.0.0, Rails 5.2.3 で確認しました。
また、データベースは、 PostgreSQL 12.0 を使っています。“`shell
$ rails –version
Rails 6.0.0
“`今回は、 [カラム名編]() をそのまま使って `rails
||= とは?
#||= とは?
代入された値が`nil`だった場合右辺の値を代入する。
“`ruby
value3 = nil #nilを代入している。value3 ||= ‘りんご’ #||=で’りんご’を代入
symbol3 = case value3
when ‘りんご’,’なし’,’きうい’,’もも’
‘果物’
when ‘きゃべつ’, ‘きゅうり’, ‘トマト’
‘やさい’
when
‘該当なし’
endputs symbol3
“`戻り値
果物
【Ruby】scanメソッドでフォーマットがバラバラの年月日情報を抜き出す
## はじめに
Rubyでデフォルトで用意されている`scan`メソッドを使ってみたら便利だったのでまとめました。参考にしたのはRuby公式リファレンスです。
[instance method String#scan (Ruby 2.6.0)](https://docs.ruby-lang.org/ja/latest/method/String/i/scan.html)## この記事が役に立つ方
– `scan`メソッドの使い方を知らない
– Ruby初心者## この記事のメリット
– `scan`メソッドで欲しい情報だけを抜き出した**配列**を作ることが出来るようになる## 環境
– macOS Catalina バージョン10.15.1
– シェル:zsh
– Ruby 2.6.3## `scan`メソッドとは?
### 公式リファレンスの説明> self に対して pattern を繰り返しマッチし、 マッチした部分文字列の配列を返します。
> pattern が正規表現で括弧を含む場合は、 括弧で括られたパターンにマッチした部分文字列の配列の配列を返し