- 1. はじめに
- 2. なぜ
- 3. 環境
- 4. 今の環境とRubyの準備
- 4.0.1. deviseのみを用いて2つの異なるログイン機能を実装する方法(ruby on rails)
- 4.0.2. 高校文化祭の食販で自動注文機を作った話
- 4.0.3. とりあえずこれだけ。Rails ToDoアプリ作成【CRUD】勉強会 #1
- 4.0.4. Windows環境でVSCodeでのRuby on Railsの開発環境構築手順
- 4.0.5. Ruby合宿2019夏に参加してきました
- 4.0.6. クソコードあるあるを詰め込んだ「ひどいFizzBuzz」を書きました。
- 4.0.7. Rails Tutorialの知識から【ポートフォリオ】を作って勉強する話 #14 ユーザ投稿表示, ページネーション編
- 4.0.8. メモ:minitest-reporters導入方法
- 4.0.9. eager_load + find_by でクエリが2回発行される件の対策
- 4.0.10. link_to をブロックで囲って each で回す方法(link_to do ~ end)
- 4.0.11. たのしいRuby5版22章で躓いたこと【エンコード関係】
- 4.0.12. CookieにSameSite属性がセットされていた時の標準エラーをとりあえず回避した話
- 4.0.13. [メモ]2019/11/15 Ruby on Rails
- 4.0.14. railsの復習
- 4.0.15. Rubyのcompact! に注意。
#Ruby 2.7.0 で改行できるようになったコンソール irb を使ってみる
それだけ。
“`
rbenv install 2.7.0-dev
“`“`
irb
“`![image](https://user-images.githubusercontent.com/13635059/64682579-afce8c00-d4bc-11e9-80b6-3993f34b3389.png)
入力中であればDELETEキーで戻ることもできるみたいです!
# Original by Github issue
https://github.com/YumaInaura/YumaInaura/issues/2719
ぼくはこんな記事を書いてきた
記事タイトルは立花隆『[ぼくはこんな本を読んできた](https://books.bunshun.jp/ud/book/num/9784163510804)』のパロディー。
ふとマイページを見たら,これまでに書いた記事が 99 本であることに気づいた。
100 本目は何を書こうか。思いつかないので過去記事を振り返ってみた。
101 本目以降の記事も必要に応じて追記していくことにする。# Ruby
やっぱり Ruby の記事が多い。
## 初心者向け
Ruby の初心者に知ってもらいたいこと。
* [Ruby のエラーメッセージを読み解く(初心者向け)その 1](https://qiita.com/scivola/items/3017068a354892b239f4)
エラーメッセージが読めるようになるのが中級への第一歩。
* [Ruby のエラーメッセージを読み解く(初心者向け)その 2](https://qiita.com/scivola/items/77017693de371ab49667)
この続きを書くつもりだが,果たせていない。
* [Ruby の文
Dolphinというシングルユーザー用のActivityPub serverを立ててみた
activitypubというprotocolがあります。わかりやすく言うと、分散snsのprotocolです。このprotocolを使ったserverで有名なのはmastodonです。
今回、misskeyというmastodonに似たプロジェクトがあるのですが、その姉妹プロジェクトであるdolphinがシングルユーザー、つまり、お一人様インスタンスと呼ばれるサーバーに特化しているようなので、herokuで立ててみました。
https://github.com/syuilo/dolphin
“`sh
$ git clone -b master git://github.com/syuilo/dolphin.git
$ cd dolphin
$ cp .config/example.yml .config/default.yml
$ npm i$ heroku create $APP_NAME
$ ls -a ./.git
$ heroku git:remote -a $APP_NAME
$ heroku buildpacks:set https://github.com/
WSL の Ubuntu に Textbringer をインストール
# 概要
WSL(Windows Subsystem for Linux)上の Ubuntu に [Textbringer](https://github.com/shugo/textbringer) をインストールする手順です。# 環境
– Windows 10 Home 64bit バージョン 1903
– WSL(Windows Subsystem for Linux)を利用
– Ubuntu 18.04 LTS
– WSLtty
– rbenv
– ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-linux]# インストール手順
`$ sudo apt install libncursesw5-dev`
`$ gem install curses`
`$ gem install textbringer`# 起動
`$ textbringer`
ローカル環境にRailsの環境を構築
はじめに
Ruby on Railsの環境構築に関する記事はたくさん存在するので、自分の備忘録的にメモ程度に残す
なぜ
Railsチュートリアルをやる上で、AWS Cloud9を使ってたんですが、ローカルにあったほうが便利じゃね?と思った
https://railstutorial.jp/環境
OS:macOS Mojave
今の環境とRubyの準備
Rubyはrbenvでいれる。
“`bash
$ which ruby
/usr/bin/ruby
$ ruby -v
ruby 2.3.7p456 (2018-03-28 revision 63024) [universal.x86_64-darwin18]
“`
こちらを参考に環境構築していきます。“`bash
$ brew install rbenv ruby-build
…
.
deviseのみを用いて2つの異なるログイン機能を実装する方法(ruby on rails)
# はじめに
久しぶりの投稿になります。(最近コーディング以外のことをやっていたせいでqiitaに記事が書けなかった^^;)
ECサイトの開発でrails-admin等の管理者機能作成gemを使わずに、deviseのみを用いて管理者とユーザーのログイン機能を実装した時に思いのほか詰まったので備忘録がてらメモを残しときます。
開発環境
仮想環境:Linux(vagrant)
rails 5.2.3
ruby 2.5.7##サンプルプロジェクトの作成
まずはrails newでサンプルとなるプロジェクトの作成を行いましょう。“`ruby:コンソール
$ rails new devise-sample
“`
これでサンプルプロジェクトの作成完了です。##deviseのインストール
まずはgemファイルにdeviseを入れてましょう。(私は毎回ファイルの一番下にdeviseを追加しています)“`ruby:Gemfile
.
.
.
gem ‘devise’
“`“`ruby:コンソール
$ bundle install
“`“`ruby:コンソール
高校文化祭の食販で自動注文機を作った話
#経緯
私の学校では、毎年文化祭で高校3年生が食販をする伝統があり、私のクラスでは「生姜焼きパン」を売ることになりました。(本記事の主旨とは逸れるがこれがめちゃくちゃ美味い)
基本的に食販は以下のようなフローで行われます。
このフローは厳守です。即ち注文が入らない場合は調理できません。作り置きは衛生上問題があるため不可です。
つまり、注文数と調理数を適切に管理しないと、両者が食い違い大量の廃棄が出る可能性すらあるのです。従来はボードなどを用いてごちゃごちゃやっていたらしいですが、あまりにも非効率で間違いが生じる可能性も否めません。そこで私たちはサーバーを用意して、文明の利器「スマートフォン」を用いた一元化管理を考えました。#仕様
基本
とりあえずこれだけ。Rails ToDoアプリ作成【CRUD】勉強会 #1
# 初心者用Railsアプリ練習帳
勉強会を開き、Rails初学者に日頃教えています。初心者向け勉強回資料用もかねて作成。
ある程度基礎を学習していると、読みながら真似はできるけど、いまいち全体の知識がつながっていないので自分で作ることができない…そんな状態になりがちでした。
## 対象者
– Railsでなんでもいいからの教材をやった人
– Rails基礎はなんとなくわかってきた人
– Railsで自分でアプリ作るのはまだ無理そうという人
– Rails以外のフレームワークならわかる人**※ 正確さより概念とアプリ作成の流れを重視します。**
## コンセプト
他にも言っている方がいますが、勉強会で教えている経験から初学者が同じ教材を何周もするのは上達が遅いように感じています。知識はあるけど自分で一から作るのは無理そう。
エラーが出て対処出来ないということになりがちでした。
こういう場合、実際に手を動かし、自分の頭で考えて簡単なアプリを作る必要があるけど、
– いきなりだと何を作ればいいのかわからない…
– 一連のアプリを作っていく順番がわからない…
–
Windows環境でVSCodeでのRuby on Railsの開発環境構築手順
※ Rubyの推奨環境はLinux?とはいえWindowsしか持ってないよ!って人向けです
# 1.Rubyのインストール
Rubyで開発する上で、最も必要なものはRubyのインストールなので
https://rubyinstaller.org/downloads/
からRuby + Devkitをダウンロードするダウンロードしたらexeファイルを実行してインストールをする
インストールしたら、
“`
ruby -v
“`
コマンドを実行、バージョンが表示されたならばOK
バージョンが表示されなければ、Rubyをインストールしたパスの下の/binフォルダにパスを通す2.Git bashのインストール
https://gitforwindows.org/
からgitをダウンロードし、インストールする3.VSCodeのインストール、環境整備
https://code.visualstudio.com/
より、VisualStudioCodeをダウンロードし
exeファイルを実行してインストールするEXTENSIONSを選択し、Rubyを選択してこれもインストー
Ruby合宿2019夏に参加してきました
この度,8月19日~23日に島根県で開催された[Ruby合宿](https://www.rubycamp.jp/)2019夏に参加してきました.
本記事では,[Ruby合宿](https://www.rubycamp.jp/)の魅力を伝え,読者の皆さんに興味を持ってもらうことを目的としています.#こんな人に読んでほしい
+ プログラミングのイベントに参加してみたい
+ 共同開発をしてみたい
+ Rubyが好き
+ Ruby合宿に興味はあるけど不安が大きい
+ 参加したいけどプログラミングに自信がない###心配しなくて大丈夫
**私自身も合宿に参加するまで不安でいっぱいでした.**でも,**全然大丈夫!**
プログラミングの経験が少ない人もたくさん参加します.
さらに,合宿中は講師の方々から非常に手厚いサポートを受けられます.—
#Ruby合宿とは
**Ruby合宿では、数名のチームでテーマに沿ったプログラムを協力して作成します.**([公式サイトより](https://www.rubycamp.jp/))
##対象
**学生(大学・高専・専門学校・高校等)または
クソコードあるあるを詰め込んだ「ひどいFizzBuzz」を書きました。
タイトルの通りです。
コードレビューの練習などにお使いください。“`ruby:hidoi_fizzbuzz.rb
print “数字を入力してください:”
# 入力された数字をnに代入する。
n = gets.chomp.to_iresult = “”
number = 0# 3の倍数かどうかを判定する。余りが0ならtrue、そうでなければfalse。
def fizz?(number)
result = true
if number % 3 == 0 then
result = true
else
result = false
endreturn result
end# 3の倍数かどうかを判定する。余りが0ならtrue、そうでなければfalse。
def judge_buzz?(n)
result = true
if n % 5 == 0 then
result = true
else
result = false
endreturn result
end# def fizzbuzz
Rails Tutorialの知識から【ポートフォリオ】を作って勉強する話 #14 ユーザ投稿表示, ページネーション編
# こんな人におすすめ
* プログラミング初心者でポートフォリオの作り方が分からない
* Rails Tutorialをやってみたが理解することが難しい前回:[#13 パスワード再設定編](https://qiita.com/aokyo17/items/28e12c9ad40cac9e528b)
次回:準備中# 今回の流れ
1. 投稿用のモデルをつくる
* サンプル投稿を表示する
* テストをつくる[Tutorial13章(第4版)](https://railstutorial.jp/chapters/user_microposts?version=5.1#cha-user_microposts)に突入しました。
今回はユーザ投稿の表示とページネーションを実装します。
(投稿機能は#15(準備中)で紹介します。)# 投稿用のモデルをつくる
ここでの手順は以下の通りです。* Micropostモデルをつくる
* Userモデルを編集する
* バリデーションを追加する
* Micropostモデルを改良する
* エラー時の日本語化を行う## Micropostモデル
メモ:minitest-reporters導入方法
書くことが無いので、rails testの結果が見やすくなるgem、「minitest-reporters」の導入方法をメモしておこうと思う。
#導入方法
Gemfileの「group :test do」の中に以下のように導入。“`
group :test do
gem ‘minitest’
gem ‘minitest-reporters’
end
“`加えて、test_helper.rbに以下の二行を追加。
“`ruby:test_helper.rb
require ‘rails/test_help’
require “minitest/reporters” #1行目
Minitest::Reporters.use! #2行目
“`
gem ‘minitest’にどういう役割があるのか、調べてもイマイチよくわからなかったが…
どうやらRailsのテストの方法はいくつかあるようで、minitestというのはそのうちの一つらしい。
今のところはminitest-reportersの前提modならぬ前提gem的な存在だと思っておくことにする(適当)。
eager_load + find_by でクエリが2回発行される件の対策
### 結論
よくある1:NのRelationがある時“`ruby
class User < ApplicationRecord has_many :comments end class Comment < ApplicationRecord belongs_to :user end ``` ```ruby User.eager_load(:comments).find_by(id: 1) ``` とかすると 1. User.find_by(id: 1) のSQL 2. User.eager_load(:comments) のSQL の2回SQLが発行される ```ruby User.eager_load(:comments).where(id: 1).load.first ``` とかするとクエリが1回になる。 (`.load` は `.to_a` とかでもOK) ~~~ ruby 2.5.1 rails 5.0.6/6.0.1(下記ログは6.0.1のものです) ~~~ で確認済み。 #### 詳細 普通にやってみたりしたけど、どうして
link_to をブロックで囲って each で回す方法(link_to do ~ end)
“`Rails:user/index.html.rb
<% @users.each |user| do %>
<%= link_to user_path(user) do %>
<%= @user.name %>
<% end %>
<% end %>“`
上記のように、link_to do〜end で囲えば良い。
たのしいRuby5版22章で躓いたこと【エンコード関係】
Rubyの知識を復習するため、『たのしいRuby第5版』という書籍を読んでいます。
今回は、その22章の「テキスト処理を行う」というところで詰まった箇所とその解決方法を書いていこうと思います。# 環境
OS:windows10# 詰まったところ
まず、青空文庫から江戸川乱歩『二銭銅貨』をダウンロードします。“`nisendouka.rb
#ダウンロードするライブラリ
require “open-uri”# 青空文庫のURL
url = “https://www.aozora.gr.jp/cards/001779/files/56647_58167.html”
# 書きこむファイル名
filename = “nisendouka.html”# バイナリモードでファイルを開きます
File.open(filename, “wb”) do |f|
text = open(url).read #ここがよくない
# nisendouka.htmlに書き込む
f.write text
end“`
このコードを実行すると、nisendouka.htmlという名前のHT
CookieにSameSite属性がセットされていた時の標準エラーをとりあえず回避した話
GoogleDriveが数日前よりCookieにSameSite属性(None)をセットするようになった。
Rubyの標準ライブラリであるWebAgent::CookieManagerはSameSite属性に対応していない。
また、未知の属性がCookieにセットされていた場合は、標準エラーを吐く。
従って、Cronでスクリプトを起動していると、標準エラー発生を通知するメールが、毎時届くようになってしまった。と、多分、このようなことが起きていたのだと思う。
メールがウザすぎるので、parseメソッドだけオーバーライドしてみた。
標準エラーでなく例外を吐いてくれたら、こんなことせずに済むのだけれど、多分、深い理由があるのでしょうね。“`ruby:core_ext.rb
class WebAgent
class Cookie
def parse(str, url)
@url = url
cookie_elem = str.split(/;/)
cookie_elem = join_quotedstr(cookie_elem, ‘;
[メモ]2019/11/15 Ruby on Rails
##Railsでページを表示するのには以下の3つのファイルが必要
ページの作成に必要なもの
・ビュー(View)
・コントローラ(Controller)
・ルーティング(routing)1. ビュー(View)
ビュー(View)とはページの見た目を作るHTMLファイル。
ブラウザとのやり取りの中で,Railsからビューが返されページが表示される。2. コントローラ(Controller)
ページを表示するときに、Railsではコントローラを経由してビューをブラウザに返す。
「rails g controller home top」を実行したとき、「home_controller.rb」というコントローラファイルが生成され、ファイルの中に「topメソッド」が追加される。
コントローラーのメソッドを「アクション」と呼ぶ。メソッドとは、「オブジェクト(もの)の操作を定義したもの」
例)オブジェクト:マリオとすると
メソッド 操作
・ジャンプする。
・走る
・しゃがむetc…
3. ルーティング(routing)
ブラウザとコントローラを繋ぐ。ページが表示されるま
railsの復習
Railsでの処理のポイント
– ルーティング
– コントローラー
– モデル
– ビューモデル、ビュー、コントローラーをまとめて
MVCという。###HTTPメソッド
– GET ページを表示する操作
– POST データを登録する操作
– PUT データを変更する操作
– DELETE データを削除する操作###コントローラ アクション
– index 一覧表示リクエストアクション
– new 新規投稿リクエストアクション
– create データ投稿リクエストアクション
– show 個別詳細表示リクエストアクション
– edit 投稿編集表示リクエストアクション
– update データ編集リクエストアクション
– destroy データ削除リクエストアクション###部分テンプレート
renderメソッドを使う。
renderメソッドのpartialオプションでファイルの指定を行う。
部分テンプレートのファイル名の先頭は「_(アンダーバー)」で始める。★以下、省略表示が鬼。順々に教えてもらいたいところ。部分テンプレートの理解が浅いうちから最終省略形見せ
Rubyのcompact! に注意。
## 経緯
compact!メソッドによって仕事でバグを生み出してしまったので、備忘録としてアウトプット## compact、compact!の戻り値
#### `compact`、`compact!`は配列から`nil`を弾くが、配列に`nil`が含まれていない時、`compact!`の戻り値が予想していないものだった。。。“`rb
## arrayがnilを含んでいる時
array = [1,2,3,4,5,nil]# compact
array.compact
=> [1, 2, 3, 4, 5]# compact!
array.compact!
=> [1, 2, 3, 4, 5]## arrayにnilがない時
array = [1,2,3,4,5]# compact
array.compact
=> [1, 2, 3, 4, 5]# compact!
array.compact!
=> nil
#ふぁ!?!?
“`## 結論
## `nil`を含んでいない配列に`compact!`を使うと、「nil含んでねーじゃねーか」的な感じで`ni