- 1. 【RuboCop】RSpecのsubject使用時の規約違反とRuboCopの違反の種類について
- 2. injectメソッドについて
- 3. Ruby
- 4. 複数プログラミング言語より Factom ブロックチェーンのアクセス
- 5. パンくず機能の実装と実装の際に出たエラー ActionController::UrlGenerationError
- 6. rails routesコマンドについて
- 7. gem activerecord-import の README を翻訳しました
- 8. 【Rubyで解く競プロ】 ボウリングのスコア計算
- 9. ridgepoleで外部キーをつける
- 10. 隣接するレコードを取り出す方法
- 11. Ruby と Python で解く AtCoder JSC2019 Qual B 等差数列の和 逆元
- 12. Day10
- 13. chart.js使ってグラフ作成してみた
- 14. Rails6でDBと連動する動的な多段セレクトボックスの作り方【Ajax不使用】
- 15. rails routes member と collectionの違い
- 16. 【開発ログ⑨】社員登録ができなくなった?
- 17. 【開発ログ⑧】社員登録しようとしたら、ウチの会社じゃない支社も出てきた
- 18. 【開発ログ⑦】Posticoにデータがない事件
- 19. Ajaxを使った非同期通信の流れ
- 20. 【超簡単!】【Rails】ancestry 親子孫を一括管理
【RuboCop】RSpecのsubject使用時の規約違反とRuboCopの違反の種類について
#はじめに
RSpecでsubjectを使用して、DRYにしようとする中で、“`ruby
subject { get ‘/api’, params: params, headers: headers; response }
“`このように書くと
RuboCopの警告を受けた。> Do not use semicolons to terminate expressions. (convention:Style/Semicolon)
↓
> 終了の表現にセミコロンを使用しないでください。(規約:スタイル/セミコロン)#対処
じゃあ、使わない場合はどうするか、、“`ruby
subject do
get ‘/api’, params: params, headers: headers
response
end
“`
こうすると、無事警告が消えました。
`subject do ~~ end`として、2行に分けることでセミコロンでコードの終端を表現する必要がなくなった、ということですね。#RuboCopの警告の種類
ずっと、RuboCopの指摘
injectメソッドについて
現在チェリー本やってます。
その中ででてきた表題の件に関して整理しておきます。
まず、大前提として、to_hexメソッドのリファクタリングの話です。
3段階のリファクタリングで、
①そのまんまのコード
②eachメドレー
③injectメソッドという流れ。ではまず最初のコードがこちら
“`ruby
def to_hex(r,g,b)
“#”+
r.to_s(16).rjust(2,”0″)+
g.to_s(16).rjust(2,”0″)+
b.to_s(16).rjust(2,”0″)
end
“`rgbを16進数の2文字ずつに変換している感じです。
injectメソッドはeachやmapなどと同様に繰り返し処理のメソッドである。
“`ruby
配列.inject(初期値の最初の値) {|初期値, 要素| ブロック処理 }
“`eachメソッドをより短くすることができることがある。
“`ruby
def to_hex(r,g,b)
hex=”#”
[r,g,b].each do|n|
hex+=n.to_s(16).rju
Ruby
# 概要
Rubyの記法で調査したメモ# 前提
Ruby初心者# Rubyの文字列表記法
## 文字列を正規表現として扱う。“`Ruby:
/Ruby正規表現/
“`※正規表現の詳細は[公式](http://docs.ruby-lang.org/ja/latest/doc/spec=2fregexp.html)にて
## 文字列に変数の値を含む
“`Ruby:
:test = “てすと”
puts “いめーじ:#{test}”
“`## 文字の変数名などを文字列として扱う(「.」など)
※「”」で表現する場合、「”\\.”」とするためURLなどの場合に使用するイメージ。“`Ruby:
:test = ‘test.com’
puts test
“`
複数プログラミング言語より Factom ブロックチェーンのアクセス
![1*UfR2neXteow2gUQrScP6BQ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/473244/e97ab578-ac24-4a8f-8033-f24eb0533b1e.png)
Kompendium LLC は色んなプログラミング言語知識と効果的な Factom のグループです。
グループのいずれかの目標は Factom エコシステムに多くの開発者を引き続け、案内や簡単に
の理解等を申し上げることです。ブロックチェーンには継続的な拡張のシステムがあるのでソ
フトウェア遷移することが大変です。Factom に興味がある開発者ために様々なプログラミン
グ言語でスムーズに扱うクライアントライブラリの収集を提供し、Factom エコシステムの開
発ツールボックスも拡大する。顧客の選択言語に利用できないライブラリは思いとどまらせる
原因です。それを防止するように Factom エコシステムの開発ツーリングの改善を努力してい
ます。大分のブロックチェーンはスマートコントラクト機能が無いですが
パンくず機能の実装と実装の際に出たエラー ActionController::UrlGenerationError
某スクールの最終課題でパンくず機能を実装した際の思い出です。
# パンくず機能とは
サイトの上の方にあるページの移動の軌跡の表示したもののこと。
メルカリでいうところのヘッダーの下にあるこれのことです。—
## ①gem ‘gretel’の導入
パンくず機能を実装するのに便利なgem。
お洒落な名前してますね。
Gemfileに“`ruby:Gemfile
gem “gretel”
“`
を追記します。
bundle installも忘れずに。—
###②ファイルの生成“`ruby
$ rails generate gretel:install
“`
このコマンドで以下のようなファイルができます。“`rub
rails routesコマンドについて
【開発環境】
macOS Catalina
バージョン 10.15.3
ruby 2.5.1
Rails 5.2.4.2
visual studio code#rails routesコマンドについて
railsでルーティング設定をした後にルーティングの行き先どうなってるっけという時に使えます。“`
$ rails routes
“`ターミナルに入力すると
例
“`
Prefix Verb URI Pattern Controller#Action
posts GET /posts(.:format) posts#index
(以下省略)
“`という風に表示されれば成功です。
Verb GET : HTTPメソッド、今回はGETです。
GETメソッドはページを表示する操作のみを行う時に使いますね。URI Pattern : WebサイトにおけるURLのようなものです。
Controller#Action posts#index : リクエストを処理するコントローラーとアクションを表しています。
今回ですと、post_cont
gem activerecord-import の README を翻訳しました
# 概要
gem [activerecord-import](https://github.com/zdennis/activerecord-import) の [README](https://github.com/zdennis/activerecord-import/blob/master/README.markdown) を翻訳しました。– 翻訳について
– 翻訳サービス [Deepl](https://www.deepl.com/translator) と [Goole翻訳](https://translate.google.co.jp/) の訳文を参考にしている箇所があります。
– 翻訳対象の[コミットハッシュ](https://github.com/zdennis/activerecord-import/commit/ef425b13e94d258f3c174dc54185fb113433095c)
– 非公式の翻訳です。
– 訳文がおかしい箇所があったら指摘をもらえると幸いです。– ライセンスについて
– [activer
【Rubyで解く競プロ】 ボウリングのスコア計算
## はじめに
ボウリングのスコア計算をするプログラムをRubyで書きました。
競技プログラミング初心者向けになっていると思います。
競プロ始めたての方(もしくはRuby始めたての方)には、楽しんで読んでもらえると思います。## [問題] ボウリングスコア計算
**ボウリングのスコア計算をせよ**
![bowlingscore1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/305294/57fa6f06-5cda-38a2-91bb-a811808f1c92.jpeg)**[入力]**
– 一行の文字列で与えられる。
– 文字と文字の間にはスペースが含まれる。
– 文字は、`0 <= n <=10`のいずれかである。 - 数字は倒れたピン数を表す。 ```txt:入力例 "3 7 10 8 2 8 1 8 1 6 3 8 2 8 2 9 1 9 1 9" ``` **[スコア計算のルール]** - ピン数は10本であり、最終フレームは10フレーム目である。 - 1投目に全てのピンを倒
ridgepoleで外部キーをつける
### はじめに
データベース作成に`ridgepole`を使ってみました。
マイグレーションファイルが増えず、カラムの追加や削除も簡単なのがいいですね。
ただ、外部キーの作成時に迷ったことがあったので残しておきます。### 外部キーのつけかた
まずは、GemのGitHubを見てみます。“`scheme
create_table “parent”, force: :cascade do |t|
endcreate_table “child”, id: false, force: :cascade do |t|
t.integer “id”
t.integer “parent_id”
endadd_index “child”, [“parent_id”], name: “par_ind”, using: :btree
add_foreign_key “child”, “parent”, name: “child_ibfk_1”
“`MySQLではインデックスを勝手に貼ってくれるみたいなので、`add_index`は書かずに、`add_foreign_ke
隣接するレコードを取り出す方法
**2020年5月13日 追記あり**
## はじめに
メルカリとかで商品詳細見てると、前のアイテムとか次のアイテム、みたいなリンクありますよね。
その機能をどうやって実装するかを書いて行きます。こんなやつです。
![7b3abffda8c84d4b8892c25a2d515669.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577535/e292026d-317f-69b7-100b-ff95abbccacd.png)## 環境
環境は関係ない普遍的なやり方ではあると思いますが一応。。。
Ruby on Rails 5.2.4
Ruby 2.5## 考え方
当初は単純に以下のように書いていました。“`ruby:items_controller.rb
def show
@item = Item.find(params[:id])
end
“`“`ruby:show.html.haml
= link_to “前の商品”, item_path(@item.id – 1)
=
Ruby と Python で解く AtCoder JSC2019 Qual B 等差数列の和 逆元
# はじめに
*[AtCoder Problems](https://kenkoooo.com/atcoder/#/)* の Recommendation を利用して、過去の問題を解いています。
AtCoder さん、AtCoder Problems さん、ありがとうございます。
# 今回のお題
*[AtCoder JSC2019 Qual B – Kleene Inversion](https://atcoder.jp/contests/jsc2019-qual/tasks/jsc2019_qual_b)*
Difficulty: 797今回のテーマ、等差数列の和 + 逆元
# Ruby
`転倒数`って初めて聞きますが、例`1 3 2`について、どのような`転倒数`になるのか見てみます。|K|3|2|1|合計|
|:–|–:|–:|–:|–:|
|132|||1|1|
|132 132||4|1|5|
|132 132 132|7|4|1|12|
`1 3 2`が一つで`1`、二つ並んで`1 3 2 1 3 2`
Day10
Dailyドリル5 Rubyの解説
・Rubyの場合メソッドの内側と外側ではスコープが異なりますので、メソッド内からpostsには直接アクセスすることができません。
・そのため、各メソッドに引数としてpostsを渡して、その返り値をpostsに再代入しています。
・各メソッドでは、仮引数がa_postsという名前で定義されています。そのため、渡されたpostsをa_postsという変数にコピーして、メソッド内で使用することができます。
→冷静になって、再考する必要あり。
言葉の定義や変数の受け渡しを復習すべし。
chart.js使ってグラフ作成してみた
#Railsで作成したアプリにグラフを簡単に入れる方法
##環境
ruby 2.5.0p0
Rails 5.2.4.2
slim##サンプルイメージ
こんなグラフが簡単に出来上がります。
##手順
gem インストール
“`
$ gem ‘chart-js-rails’, ‘~> 0.1.4’
“`“`
bundle install
“`chart.js インストール
“`ruby:package.json
{
“name”: “hoge”,
“private”: true,
“dependencies”: {
“chart.js”: “^2.7.1” ←★追記
}
}
“`“
Rails6でDBと連動する動的な多段セレクトボックスの作り方【Ajax不使用】
## 使用言語・前提
– Ruby(Ruby on Rails 6.0)
– JavaScript(jQuery)
– formではbootstrapformを利用。## 実現したいDBと連携する動的な多段セレクトボックスとは?
大、中、小のカテゴリのモデルが存在していて、これからのモデルはリレーションされているとします。“` large_category.rb
class LargeCategory < ApplicationRecord has_many :medium_categories, dependent: :restrict_with_error end ``` ``` medium_category.rb class MediumCategory < ApplicationRecord belongs_to :large_category has_many :small_categories, dependent: :destroy end ``` ``` small_category.rb class SmallCategory < Appli
rails routes member と collectionの違い
#rails routes member と collectionの違い
`resources(RESTfulルーティング)`を利用すると7つのデフォルトのルーティング`(index,create,new,edit,show,update,destroy)`が自動で生成されます.
ただ,自分で定義した独自のアクションへのルーティングを設定する場合は`member`または`collection`というオプションを利用する必要があります。
その際に,memberとcollectionの違いが気になり調べたので両者の違いをまとめます。
## 目次
* [はじめに](#はじめに)
* [やりたいこと](#やりたいこと)
* [やり方](#やり方)
* [おまけ](#おまけ)## はじめに
検証用にPostsコントローラへのルーティングファイルを作成します.
“`ruby:routes.rb
Rails.application.routes.draw do
resources :posts
end
“`
デフォルトで以下の7つのルーティングが生成されます.`(ind
【開発ログ⑨】社員登録ができなくなった?
# 前提について
はじめまして、 プログラミングスクールに通ういりふねと申します。この記事は、スクールの課題である個人アプリの開発の記録を書くことで、自身のアウトプットに利用しています。もし、読んでいただけた方がいましたら、フィードバックをしていただけたら嬉しいです。開発するのは「有給休暇管理ツール」です。仕様は[過去記事](https://qiita.com/iczo32/items/97ad7d4baa985b3b99ca)をどうぞ。
アプリはデプロイまで行いますが、サービスとして提供するものではありません。あくまでも自学習の一環ですので、ご理解下さい。では本題へどうぞ。
#今回の実施内容
前回までで、支社と社員の登録が完成しました。記事では取り上げませんが、ビューページの左カラムに登録した支社名と支社に所属する従業員数が、メインビューの有休管理一覧の「名前」と「入社日」に登録した社員のものが各表示されるようにeach文を記述しました。結果は以下のとおりです。
【開発ログ⑧】社員登録しようとしたら、ウチの会社じゃない支社も出てきた
# 前提について
はじめまして、 プログラミングスクールに通ういりふねと申します。この記事は、スクールの課題である個人アプリの開発の記録を書くことで、自身のアウトプットに利用しています。もし、読んでいただけた方がいましたら、フィードバックをしていただけたら嬉しいです。開発するのは「有給休暇管理ツール」です。仕様は[過去記事](https://qiita.com/iczo32/items/97ad7d4baa985b3b99ca)をどうぞ。
アプリはデプロイまで行いますが、サービスとして提供するものではありません。あくまでも自学習の一環ですので、ご理解下さい。では本題へどうぞ。
# 今回実施する内容
支社登録が実装できたので、続けて社員の登録の実装を行います。社員は必ず1つの支社に所属しています。社員の登録画面のポイントは、ユーザーが登録した支社を選択できるようにすること。逆に他のユーザーが登録した支社は自社に関係なので表示させたくありません。手順は概ね[前回の記事](https://qiita.com/iczo32/items/6014cf45afd07b3261a8)と同じな
【開発ログ⑦】Posticoにデータがない事件
# 前提について
はじめまして、 プログラミングスクールに通ういりふねと申します。この記事は、スクールの課題である個人アプリの開発の記録を書くことで、自身のアウトプットに利用しています。もし、読んでいただけた方がいましたら、フィードバックをしていただけたら嬉しいです。開発するのは「有給休暇管理ツール」です。仕様は[過去記事](https://qiita.com/iczo32/items/97ad7d4baa985b3b99ca)をどうぞ。
アプリはデプロイまで行いますが、サービスとして提供するものではありません。あくまでも自学習の一環ですので、ご理解下さい。では本題へどうぞ。
# 今回実施する内容
前回までで、仮データを入れたビューが完成しました。今回は、支社の登録を行って、きちんとデータベースに反映されているかを確認します。– ルーティングの編集
– 支社登録用のbranchコントローラーの作成
– 支社登録を行うビューページを作成
– メインページに支社登録へのリンクを作成
– ローカルブラウザから支社登録の実施
– データベースに保存されているか確認できればOK#
Ajaxを使った非同期通信の流れ
Ajaxを使った非同期通信の流れ
#非同期通信(Ajax)とは?
ブラウザが再読み込みされることなく通信が行われる通信方式
画面をリロードしなくても、情報が反映されるWepアプリケーションの機能!AsynchronousJavaScriptXML
の略!エイジャックスと読む。
レスポンスのデータに JSONというデータ形式を使う。#JSONとは?
JavaScriptObjectNotationの略で、データ交換を行うための一種
Rubyのハッシュと同様、キーとバリューの組み合わせ。
例){ name: “yamada”}みたいな#turbolinksを消す
gemfilre
application.html.haml
application.js#RailsのjQuery導入
#
“`
gem ‘jquery-rails’
“`
#application.js
“`
//= require jquery
//= require jquery_ujs
“`#非同期通信の実装の全体の流れ
1,JavaScriptを利用してリクエストを行う
2,
【超簡単!】【Rails】ancestry 親子孫を一括管理
# ancestryとは
Ruby on Rails ActiveRecordモデルのレコードをツリー構造(または階層)として編成できるようにするGemです。
親、子、孫のような関係を一括で管理する。# 使い方
1、Gemfileに記述
“`
gem ‘ancestry’
“`2、下記コマンドを忘れないように。サーバーの再起動も合わせて。
“`
$ bundle install
“`3、categoryモデルを作る。
“`
$ rails g model category name:string
“`4、マイグレーションファイルの記述を反映
“`
$ rails db:migrate
“`5、先ほど作ったcategoriesテーブルにancestryのカラムを作成する
“`
$ rails g migration add_ancestry_to_category ancestry:string:index
“`6、追記した内容もDBに反映させる
“`
$ rails db:migrate
“`7、モデルにancest