- 1. ruby 配列 総集編
- 2. 【翻訳】Railsで権限管理を出来るgem, “Pundit”(前編)
- 3. Ruby 条件分岐 繰り返し処理 総集編
- 4. Ruby小ネタ
- 5. devise+omniauth-rails_csrf_protection+[facebook/google]を使ったユーザ登録とログイン
- 6. オンライン決済サービス Stripe の API を #Ruby の pry で叩いたら JSON が見にくいので pry-doc で色付けしてみたり curl + jq を使ったりと
- 7. 複利計算(高配当株式積立投資用)
- 8. [Ruby] ArrayからindexをkeyにしたHashを生成する
- 9. Ruby 変数 ハッシュ 総集編
- 10. Railsのテスト環境にデバッグ用の情報を表示する
- 11. RailsアプリをHerokuにデプロイする手順
- 12. 組み合わせ数の合計を出す(メモ)
- 13. uninitialized constant Tweet::ImageUploader carrierwave mini_magick 導入
- 14. railsでsubmitをキャンセルする
- 15. git checkoutによって エラーが何か追求する プログラミング学習42日目
- 16. 今週のRuby (while、for, each , loop 〜クラスメソッドアクセサまで)
- 17. RubyとPHPで簡単なアプリケーションを作ってみる。
- 18. redirect_toメソッドの引数内で || 演算子を用いる。その動作の解説(Railsチュートリアル 第10章より)
- 19. Ruby on Railsで簡単なアプリを作成
- 20. untilで繰り返し
ruby 配列 総集編
総集編part3になります。
ここでは処理の仕組みや流れを解説します
※ググればすぐ出る、メソッドの意味などは割愛します。お題
●配列
●スコープ
●引数本題
●配列
ハッシュと似てます。
管理方法が異なり、
hashは、keyでvalueを管理してますね。
配列は、順番で管理してます。では、解説
1行目
配列名=[]で配列を宣言します
pencil_caseと言う配列名を作成しました。
中身は、ペン・消しゴム・定規です。2行目
配列演算子(<<) 中身を追加することです これで、鉛筆も配列に追加されました 3行目 これでputsすると、4つ出てきます。 今後の為のポイントですが、数え方は0からスタートです。 ペン = 0 消しゴ
【翻訳】Railsで権限管理を出来るgem, “Pundit”(前編)
Railsで権限管理を実装できるPunditの公式リファレンスを翻訳します。
Railsでの権限管理は`cancancan`が有名です。`cancancan`はユーザーに対して権限を実装するのに対して、`pundit`はmodelに対して権限を実装するという違いがあります。# Pundit
Punditは、通常のRubyクラスとオブジェクト指向のデザインパターンを活用して、シンプルで堅牢かつ拡張性のある認証システムを構築するためのヘルパーを提供します。## インストール
“`
gem “pundit”
“`ApplicationControllerにPunditをincludeします。
“`ruby
class ApplicationController < ActionController::Base include Pundit protect_from_forgery end ``` 必要に応じてgeneratorを実行出来ます。これにより、便利なデフォルトを使用してapplication policyが生成されます。 ``` rails g p
Ruby 条件分岐 繰り返し処理 総集編
ruby 総集編 part2
ここでは処理の仕組みや流れを解説します
※ググればすぐ出る、メソッドの意味などは割愛します。お題
・条件分岐 if~end
・繰り返し処理 while true do~end本題
●条件分岐 if~end
注意点
コードを読む順番
def~endは、無視されます
if内のpost_reviewがpost_reviewをメソッド呼び出します。
※defとはメソッドを定義するコードです
Ruby小ネタ他の言語やっていた人がRubyやって、なるほどこう書くのか、と思ったものを幾つか。
### presence
“`ruby:
a = b.present? ? b : nil
a = b.presence
“`
上下とも同じ意味だけど、三項演算子よりも、presenceの方がRubyライク。
ここで、nilではなく任意の値を入れるならば「||」でいれる。“`ruby:
a = b.presence || ‘hoge’
“`### ループ
“`ruby:Rubyの場合
[*1..10].each do |index|
end
“`“`C#:C#の場合
for(int i = 1; i<11 ;i++){ } ``` ずっとC#だったので、ループというとfor文と思ってしまうけど、Rubyは配列を回すイメージ。 そしてよくある、「この配列の中に'A'という値が含まれるか」チェックは、C#だとループ回してif文かませるパターンですが、Rubyならany?でいける。 ```ruby:配列に値が含まれるか? [*1..10].any?(4) ``` で、業務で使うと
devise+omniauth-rails_csrf_protection+[facebook/google]を使ったユーザ登録とログイン
##この記事で解決できること
deviseを使ったSNS認証ログイン
snsのユーザ情報を利用して登録フォームに入力する**メールアドレスで登録するとき**
**snsを使って登録するとき**
##開発環境
MacOS Mojave 10.14.6
ruby 2.5.1
Rails 5.2.3
mysql
オンライン決済サービス Stripe の API を #Ruby の pry で叩いたら JSON が見にくいので pry-doc で色付けしてみたり curl + jq を使ったりと
なんとAPI doc の例はそのまま使える一般公開のキーっぽい
https://stripe.com/docs/api/invoices/list?lang=ruby# install pry
“`
gem install pry pry-doc
“`![image](https://user-images.githubusercontent.com/13635059/69239380-66e23480-0bdd-11ea-8325-7b66e502738f.png)
# でも JSON みづらすぎ!
“`
require ‘stripe’
Stripe.api_key = ‘sk_test_4eC39HqLyjWDarjtT1zdp7dc’
Stripe::Invoice.list({limit: 3})
“`![image](https://user-images.githubusercontent.com/13635059/69239446-9133f200-0bdd-11ea-8493-2ef3f6ac7452.png)
# ハッシュなら色がつく
複利計算(高配当株式積立投資用)
複利計算をしたくて書きました。
#コード
“`ruby
monthly = 50000 #月々の積立額
every_year = monthly * 12 #年間積立額
during = 20 #積立年数(運用年数)
annual = 0.04 #運用利回り
tax_rate = 0.8 #税率(配当への課税)
annual = annual * tax_rate
assets = 0
outputs = []
size = 0
hantei = 0
amount = “”
i=0
count = 0
puts “月々の積立額は#{monthly}円で年間#{every_year}円積み立てる。”
puts “運用利回り#{annual*100}%で#{during}年経過するとこうなる。”
while i < during do assets = assets + every_year assets = assets + (assets * annual) outputs = assets.round.to_s.chars size = outputs.size
[Ruby] ArrayからindexをkeyにしたHashを生成する
# TL;DR
配列に含まれる各要素が、何番目に存在するのかを`O(1)`で取得できるハッシュを作りたかった
“`ruby
array = %w[one two three]
array.zip(0…array.size).to_h # {“one”=>0, “two”=>1, “three”=>2}
“``Array`クラスにメソッドを生やすともっとスマートだったりする。
“`ruby
class Array
def zip_with_sequence
zip(0…size).to_h
end
end%w[one two three].zip_with_sequence # {“one”=>0, “two”=>1, “three”=>2}
“``zip_with_sequence` という名前で`Hash`が生成されるのは微妙かも…?
# 解説
## Array#zip
`Array#zip` は、レシーバのArrayと引数のArrayを列方向に結合しながら行数分だけ配列の配列を生成するメソッドです。
“`ruby
[1,
Ruby 変数 ハッシュ 総集編
総集編になります。
ここでは処理の仕組みや流れを解説します
※ググればすぐ出る、メソッドの意味などは割愛します。お題
●変数、代入、再代入
●ハッシュ、キー、バリュー本題
●変数、代入、再代入
上記をご覧になりながら説明しますまず代入です。Hello Worldをvalueに代入します。
左辺 = 右辺 の式は、
右辺を左辺に代入という意味です。
ここでいう、左辺を変数、右辺を変数に定義する内容です。では、進めていきます
puts valueとは、変数を表示という意味ですvalue = See Youは、最初に代入した内容を再代入してます。numberの中身を変更します。とう宣言です。
最後は、再代入したものをputsしている。
Railsのテスト環境にデバッグ用の情報を表示する
Viewファイル内に
`<%= debug {変数} if Rails.env.development? %>`
を追加すると、テスト環境で任意の変数の中身を出力することができます。####`@user`の中身を確認したい時
“`
<%= debug @user if Rails.env.development? %>
“`####`params`を確認したい時####
“`
<%= debug params if Rails.env.development? %>
“``/app/views/application.html.erb`に記述することで、全てのページでの出力が可能です。
/app/views/application.html.erbの最下部に`<%= debug params if Rails.env.development? %>`と記述した場合の表示。
RailsアプリをHerokuにデプロイする手順本記事は、以下の記事を自分用にまとめ直したものです。
[【初心者向け】railsアプリをherokuを使って確実にデプロイする方法【決定版】](https://qiita.com/kazukimatsumoto/items/a0daa7281a3948701c39)・Gitのインストール、Commit
・Heroku CLIのインストール
はできている前提で話を進めます。詳しい内容が知りたい方は、上記の記事をご参照ください。
##1.Railsでアプリを作成
各自アプリを作成します。rootにアクセスされた時にルーティングを忘れずに設定してください。##2.Gemfileの設定
開発環境(ローカル)、本番環境(Heroku)のそれぞれで利用するデータベースの情報をGemfileに記述します。
まず12行目付近の`gem ‘sqlite3’`をコメントアウトします。“` Gemfile
# gem ‘sqlite3’
“`
次に40行目付近`group :development, :test do ~~ end`内に、開発環境、テスト環境用のデータベースに関するGemを追
組み合わせ数の合計を出す(メモ)
(32個から1個取り出すときの組み合わせ)+(32個から2個取り出すときの組み合わせ)+(32個から3個取り出すときの組み合わせ)+…というようにやっていって最終的に31個取り出すまでの組み合わせ数の合計を知りたくて作りました
“`rb
num = 32
r = 1
sum = 0while r < num do n = num i = r numerator = 1 denominator = 1 while i > 0 do
denominator = denominator * i
numerator = numerator * n
n = n – 1
i = i – 1
end
result = numerator / denominator
puts “[#{num}C#{r}]#{result}”
sum = sum + result
r = r + 1
end
puts “合計#{sum}通り”
“`実行結果↓
![image.png](https://qiita-image-sto
uninitialized constant Tweet::ImageUploader carrierwave mini_magick 導入
写真アップ機能追加のために
$ brew install imagemagick
ターミナルで実行gem ‘carrierwave’
gem ‘mini_magick’
Gemfileに記載
$ bundle install
$ rails g uploader imageapp/models/tweet.rb に下記記載
mount_uploader :image, ImageUploaderapp/uploaders/image_uploader.rbに下記記載
include CarrierWave::MiniMagick
process resize_to_fit: [800, 800]![スクリーンショット 2019-11-20 19.20.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536447/bf77b403-9d3a-8811-67cb-ab05cf37249c.png)このようなエラーが出ます原因は何でしょう?
$ brew install image
railsでsubmitをキャンセルする
参考:https://www.sejuku.net/blog/28720#submit
「false」を渡してあげるだけです。
“`javascript
<%= form_for @wifi_agency, html: {class: 'form'} do |f| %>
<%= f.text_field :name, :class=>“form-control”%>
<%= f.submit "保存", class: "btn btn-success", :onclick => “return check_name()”%>
<% end %>
“`
git checkoutによって エラーが何か追求する プログラミング学習42日目
###そもそもなんでgithubを使うの?###
githubは簡単に言うと変更を記録したりするものです。
チーム開発などでは必須です。ただ僕は初心者なのであくまでも1人で使っています。##githubは初心者1人でも使うべき##
例えば何か変更を加えたことでエラーが出てしまった時。エラーの原因が分からないから元に戻したい、そんな時にgithubは役に立ちます。![IMG_6445.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513269/0e556c64-5d46-056d-8a3f-7ff440e82403.jpeg)
こちらはインターン先のエンジニアの方に書いていただいたgithubの簡単な説明になります。masterがデプロイするもの(実際にサービスとしてリリースするもの?)で、そのよこのthongとsekiはエンジニアの名前です。
例えばmasterでA,B,Cまで作ってあり、それ以降を変更する場合各エンジニアはそれぞれのブランチでその変更作業を行います。理由→変更したものがそのま
今週のRuby (while、for, each , loop 〜クラスメソッドアクセサまで)
##今回の内容
1. while,timesを使う
2. for,eachを使う
3. loop, break, nextを使う
4. メソッドを作る。
5. クラスをつくる
6. アクセサを使う attr_, selfなど
7. クラスメソッド、クラス変数を使おう##while,timesメソッドを使う
###while書き方
whileは他の言語でもおなじみ。
使いやすい。
条件書式付き文字が意外と便利なことに気づく。
> \#{1}“`ruby
i =0
while i < 10 do puts "#{i}:hello" i +=1 end ``` ###timesメソッド whileと機能としては一緒だが、回数がすでに決まっているときは便利な書き方。 ```ruby 10.times do |i| #|i|をつけるとiを0からカウントしてくれる。特に見る必要性がなければ入れる必要性がない。 puts "#{i}:hello" end ``` iのカウント方法が独特で忘れそう。 あまり使う機会がなさそうだけど、表記自体が少なくて楽。 ```r
RubyとPHPで簡単なアプリケーションを作ってみる。
##概要
巷では
RubyとPHPどちらを勉強した方がいいですか?
といった質問やRubyとPHP徹底比較!
といった記事が散見されます。初学者の方でも書けるじゃんけんアプリをRubyとPHPで作成しましたので公開します。
##Ruby
“`janken.rb
class Play
def player
puts ‘数字を入力してください’
puts ‘0:グー’
puts ‘1:チョキ’
puts ‘2:パー’
player_hand = gets.to_i
enddef enemy
janken = [0,1,2]
enemy_hand = janken.sample
enddef pon player_hand,enemy_hand
puts “あなたの手#{player_hand}”
puts “相手の手#{enemy_hand}”if player_hand === enemy_hand
puts “アイコです、もう1回”
redirect_toメソッドの引数内で || 演算子を用いる。その動作の解説(Railsチュートリアル 第10章より)
# これは何の解説?
Railsチュートリアル第10章内、[フレンドリーフォワーディングの実装](https://railstutorial.jp/chapters/updating_and_deleting_users?version=5.1#code-friendly_forwarding_code)内`redirect_back_or`メソッドの実装において出現する「`redirect_to`メソッドの引数内で`||`を用いたコードの動作解説」となります。
# 解説
“`ruby:
session[:forwarding_url] || default
“`上記は`redirect_to`の引数です。`||`演算子を用いることによって、以下の動作を実現しています。
* `session[:forwarding_url]`が`nil`でなければ`session[:forwarding_url]`を返す
* `session[:forwarding_url]`が`nil`であればデフォルトのURLを返すしかし、`||`演算子でこのような動作が実現できるのはなぜでし
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 条件式
処理
end
“`#例
“`ruby
num = 50
until num < 0 puts num num -= 1 end ``` 50から0まで出力されます。 ポイントは0が出力されるということです。 0はfalse,-1からtrueです。 #途中で処理を抜けたい時はbreak 毎度おなじみbreakさんの登場です。 ```ruby num = 50 until num < 0 puts num num -= 1 if num == 25 break end end ``` 結果は50から26まで表示されます。
whileとuntil
時と場合によって使い分けられるエンジニアになりたいものです。ではまた!