- 1. rubyにおけるオブジェクトとメソッドについて
- 2. -3の2乗 という計算
- 3. rubyの基本文法1
- 4. return、 break、nextの違い
- 5. Ruby | Qiita API で自分の記事全てを編集してリンクを追加したスクリプトの例
- 6. 【Ruby】APOD APIで毎日更新される宇宙写真を保存する
- 7. windows10でvagrant(ubuntu20.04)を使いrails6のローカル開発環境を構築する
- 8. ローカルからDocker内に入るコマンド
- 9. Ruby on Railsでアプリを作る準備をする
- 10. 【Ruby翻訳】実務でリーダブルコードはどう役に立つのか ~Part1~
- 11. Ruby で楽しいルーレット
- 12. Rubyで通信を伴うSPAを構築してみました
- 13. authenticate_user!メソッドの使い方
- 14. Linuxコマンド一覧
- 15. Docker を使ってRuby on Railsの開発環境を構築(M1チップのMac)
- 16. RubyのSymbol(シンボル)とは?文字列とは何が違うのか
- 17. ランダムにグループ分けするRuby演習
- 18. 「完全に理解した」状態の僕が「チョットワカル…」になるまでのとある企業の新人研修 part.1
- 19. railsチュートリアルをなるべく嚙み砕く 1章
- 20. Ruby | Qiita API で記事を更新する ( PATCHリクエスト )
rubyにおけるオブジェクトとメソッドについて
# rubyにおけるオブジェクトとメソッドについて
“`
puts “apple”.length
“`
## オブジェクトとは
文字列や値、配列や浮動小数点等 物、 英語で言う主語のイメージ
上記のコードでいう __apple__
## メソッドとは
オブジェクトに意味を与えるもの
上記のコードを参照すると __puts__ __length__
appleというオブジェクトの文字数を表示してになる。#### 補足
オブジェクトやメソッドは言語によって捉え方が違う。
学習していく中で語句の知識を深めていきたい。
-3の2乗 という計算
# これは何?
指数演算子が `**` だとして。
`-3**2` という文字列を評価する場合。
* `(-3)**2`
* `-(3**2)`という二通りの解釈があり得る。
一方。
数学では $-3^{2}$ は $-(3^{2})$ と評価するのが常識となっている。
プログラミング言語ではどうなっているだろうという調査。# 各言語の対応
## ruby
この調査を始めようと思ったきっかけ。
“`ruby:ruby3.1
p( -3**2 ) #=> -9
“`つまり、 `-3**2` は `-(3**2)` となる。
[Ruby 3.1 リファレンスマニュアル 演算子式](https://docs.ruby-lang.org/ja/latest/doc/spec=2foperator.html) を見ると、単項 `-` より `**` の優先順位が上なのでそうだよね。
……という簡単な話ではない。“`ruby:ruby3.1
p( -2[3] ) #=> 1
p( (-2)[3] ) #=> 1
p( -(2[3]) ) #=> 0
rubyの基本文法1
# rubyの基本文法
Rubyのプログラムファイルは、拡張子「.rb」で作成する。
“`ruby:qiita.rb
puts ‘Hello world.’
“`## メソッド(関数)とは
何らかの処理をさせる命令
上記のコードを例にするとputsの部分
## 引数
関数の後ろに続く記述
メソッドに渡す値を記述する
putsメソッドの引数’Hello, World.’によって、「Hello, World.」という文字列が出力されます。
文字列は、ダブルクォーテーション(”)またはシングルクォーテーション(’)で囲む必要がある。
上記のコードを例にするとHello worldの部分## ターミナルで結果を表示させてみる
`$ ruby 記述したファイル名`
![スクリーンショット 2022-05-16 17.43.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2280943/5ce43089-5092-af53-0b79-5b0272106d78.png)## 文字列型(Strin
return、 break、nextの違い
「フォームから入力された値が不正だった場合にエラーメッセージを表示しよう」というメソッドの中で、「もし、このケースであればすぐに次の処理に移りたい」というときその行で「return」させてみたのですがそれだとメソッド自体から離脱してしまい次の行の処理ができなくなってしまったので別の方法を探してみました。
## return
その時のコードはこのような形
“`ruby
def hoge
error_messages = []
CSV.parse(tsv_text, headers: true, col_sep: “\t”) do |row|
error_messages << "shop_id:#{row["shop_id"]}は存在しないIDです" if Shop.find_by(id: row["shop_id"]).blank? error_messages << "user_id:#{row["user_id"]}は存在しないIDです" if User.find_by(id: row["user_id"]).blank? error_mes
Ruby | Qiita API で自分の記事全てを編集してリンクを追加したスクリプトの例
# 概要
自分の記事全てを取得し、元のテキスト本文にテキストを追加して編集リクエストを続けていく。
ちなみに2000記事ほどを連続で編集しようとすると、途中で制限されたのか、Fobbiden扱いになった。
# コード
“`rb
require ‘net/https’
require ‘uri’
require ‘json’uri = URI.parse(“https://qiita.com/”)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = truerequest_header = {‘Content-Type’ =>’application/json’, “Authorization” => “Bearer #{ENV[‘TOKEN’]}”}
round = 0
# 100はQiita APIのページめくりのMAX
(1..100).each do |i|
get_url = “https://qiita.com/api/v2/users/#{ENV[‘USER_ID’]}/items?pag
【Ruby】APOD APIで毎日更新される宇宙写真を保存する
# はじめに
NASAのAPIでAPODというのがあって、これが毎日宇宙写真を更新していると知り、デスクトップの背景に使いたいと思ったのがきっかけでした。https://apod.nasa.gov/apod/lib/about_apod.html
https://apod.nasa.gov/apod/archivepix.html
### 完成形
1. 画像を指定したディレクトリに保存する
2. 指定した日付の宇宙写真のタイトルと説明文を表示する2の出力はこんな感じです
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2549439/530a5d46-001a-8e6a-3354-f8581e310cfe.png)### 前提・gemなど
`Windows10`
Ruby `3.1.1`
gem `nasa_apod`, `open-uri`, `date`# 手順
## 1. NASAのAPIキーを生成する
APIキーを生成します。名前とメールアドレスを登録すれば取得
windows10でvagrant(ubuntu20.04)を使いrails6のローカル開発環境を構築する
## はじめに(経緯など)
macのローカル開発環境で動かしていたものを、windows上でも動かしたかったのでやってみた。
いろいろな記事を参考にまとめたものになるので、単に構築したいだけなら他の記事のほうがさくっとできるかもしれない。
初学者の自分が書いていいものか迷ったが、このへんの情報がかなり少なく感じたこともあって書いてみることにした。
自分の備忘録的要素が強いです。
ちなみに、作業時間の目安は1~2時間程度です。## 目次
– 必要なアプリのインストール
– vagrantのセットアップ
– vagrantfile書き換える
– 環境構築
– コンパイラおよび必要なツールをインストール
– rubyのインストール
– railsのインストール
– sqliteのインストール
– node.jsのインストール
– mysqlサーバーとクライアントのインストール
– 補足
– rails sで構築できているか確認
– macからgithubで持ってくる場合
– rails newで新しく作る場合
–
ローカルからDocker内に入るコマンド
Dockerでの開発環境が終わり、Railsの基本であるモデルやコントローラー、ビューを作成するコマンドを入力しようとしたが、ターミナルで
homesというコントローラ作成のコマンドを入力すると
“`言語:ターミナル
rails g controller homes
“`このようなエラーが出た。
Rails is not currently installed on this system. To get the latest version, simply type:
sudo gem install rails
You can then rerun your “rails” command.ローカルでこのコマンドしてもダメだと気づき、ドッカー内に入らないといけないと認識した。
そこで調べたところ、下記サイトに行きついた。
https://qiita.com/Keitaroooo/items/a30bf4eb9310d7b3f7cdこのサイトにある通りに進めた。
ドッカー内に入る方法は2つ
一つ目は
# dockerコマンド“`言語:ターミナル
dock
Ruby on Railsでアプリを作る準備をする
毎回どうだっけと忘れてしまうので、Ruby on Railsのアプリを立ち上げるところまでをまとめました。備忘録です。
## railsをインストールする
Bundlerのインストール
“`
gem install bundler
“`
Railsのインストール
“`
gem install rails
“`## rails new コマンドでアプリケーション作成の準備
webpackerをインストールする
“`
rails webpacker:install
“`
rails new コマンド
cdコマンドでPC上のアプリを作成したいディレクトリに移動し
“`
rails new アプリケーション名
“`
成功した場合、ターミナルに以下のように表示されます。
![スクリーンショット 2022-05-15 17.37.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2602010/7673abed-5b23-632f-65d3-086668ca6551.png)※rail
【Ruby翻訳】実務でリーダブルコードはどう役に立つのか ~Part1~
# はじめに
どうも、最近未経験からエンジニア転職をしたもきおです。
現役エンジニアの方にオススメされる本で一番紹介されると言っても過言ではない本が「リーダブルコード」。私自身も未経験時代から読んでみたはいいものの後半にいくにつれ「あれ?思ったよりムズくね?初心者向けじゃないやん」と思い本を閉じてしまいました。今回入社後改めてCTOにおすすめしていただき、読み切ったのでここでアウトプットしていきたいと思います。
## そもそもなぜ読むのが難しいと感じるのか「リーダブルコード読むのが難しいとか何いってんの??」という方はこの章を読む必要がないかなと思いますが少なからずこの本が難しいと感じる人は一定数いるのかなと思っております。
この本を自分が難しいと感じた理由としては2点。
1.サンプルコードがJavaScriptやC+
Ruby で楽しいルーレット
# この記事は?
ターミナル上で気軽にルーレットを楽しめるスクリプトを Ruby で実装します。
![2022-05-15 11-26-16.2022-05-15 11_26_57.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6697/600266c7-7a24-d8b9-08ab-e98758c0518c.gif)
# 実装
“`rb:roulette
#! /usr/bin/env ruby
def clear_line
print(“\e[A\e[K”)
enddef blink(item)
red, yellow = 31, 33
[red, yellow, red, yellow].each_with_index do |color, i|
if i > 0
sleep(0.2)
clear_line
end
puts(“\e[#{color}m#{item}\e[0m”)
end
end# 実行中のスクリプト
Rubyで通信を伴うSPAを構築してみました
# 前回までのあらすじ
[前回の記事](https://qiita.com/keyasuda-2/items/ac6e4ff4f64ab10c5ae5)では、[RubyのWebAssemblyポート](https://github.com/ruby/ruby.wasm)を使いSPA(single-page application)を構築するためのパッケージを開発し、[TodoMVC](https://todomvc.com/)を[移植しました](https://github.com/keyasuda/bormashino-todomvc)。# はじめに
TodoMVCは通信を伴わずブラウザ上のみで完結するアプリケーションだったため、構築用パッケージ”[Bormaŝino](https://github.com/keyasuda/bormashino)”は特に通信系の機能は持っておらず、[jsモジュール](https://github.com/ruby/ruby.wasm/tree/main/ext/js#ruby-extension-to-manipulate-javascript
authenticate_user!メソッドの使い方
## どんなメソッドか?
ログイン状態によって表示するページを切り替えるメソッドです。
ログインしていないユーザーを、ログイン画面に遷移したい場合に使います。
before actionで呼び出すことにより、コントローラーのアクションを実行する前に、ユーザーがログインしていなければログイン画面に遷移することができます。“`ruby
before action authenticate user!
“`## onlyの後にアクションを指定した場合の例
“`ruby
before action authenticate user!, only: [:new, :edit]
“`
上記の場合、ログインしていないユーザーがnewアクションとeditアクションを実行した場合のみ、ログイン画面に遷移することができます。
only以外にもexpectの後にアクションを指定することで、ログインしていないユーザーが指定したアクション以外を実行した場合に、ログイン画面へ遷移させることもできます。
Linuxコマンド一覧
# Linuxについて
LinuxとはOSの一種であり、『OS』とはオペレーティングシステムの略である。
OSはソフトウェア(アプリなど)とハードウェア(記録・保管装置)を繋ぐ役割があり、OSが機能しているからこそ閲覧や保存が正常に行われる。MacやWindowsのOSと違い、無料のオープンソースとして扱えることができ、Linuxをベースとして誰でも開発・改良が行えるのが特徴としてある。
ユーザー権限が厳しく管理されているので、安全性の高いサーバとして活用できる。# Linuxコマンド一覧
| コマンド|内容|
|:———–:|:————:|
| pwd| カレントディレクトリのパスを表示するコマンド |
|ls|ディレクトリやファイルの一覧を表示するコマンド|
|cd|カレントディレクトリから別のディレクトリに移動するコマンド|### Rubyで使うコマンド一覧
| コマンド|内容|
|:———–:|:————:|
|rails “`_6.0.0_“` new アプリケーション名|Railsで新規アプリ
Docker を使ってRuby on Railsの開発環境を構築(M1チップのMac)
M1 Macbookを使ってポートフォリオを作ろうと思い、Virtual Boxで開発環境を作成しようとするとVirtual Boxが使えないことが発覚したので、Dockerを使って開発環境を構築しようとした。
しかし、色んなサイトの作成方法を真似しても上手くいかず、Dockerの公式ドキュメントを参考にしたところ、Yay! You’re on Rails!の画面を出すことができた。
手こずってしまった原因がDockerへの理解不足だったため基本的な概念を備忘録として記載しようと思う。
表現が不適切なところも多々あると思うので、ご指摘くだされば幸いです。まずはイメージ図を頭に入れる
![スクリーンショット 2022-05-14 22.31.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2654361/101cda71-0ae6-cd6a-73d0-219009c17c04.png)
引用
https://coinbaby8.com/docker-beginner.htmlDocker
RubyのSymbol(シンボル)とは?文字列とは何が違うのか
Rubyでは全ての値はオブジェクトのため、一見ただの数値に見えてもそれは`Integer`クラスのオブジェクトです。
そこで`methods`メソッドを使って、そのオブジェクトが所属する`Integer`クラスのメソッドを見てみたいと思います。“`irb:irb
irb(main):006:0> 123.class
=> Integer
irb(main):007:0> 123.methods
=> [:-@, :**, :<=>, :upto, :<<, :<=, :>=, :==, :chr, :===, :>>, :[], :%, :&, :inspect, :*, :+, :ord, :-, :/, :size, :succ, :<, :>, :to_int, :coerce, :to_s, :to_i, :to_f, :divmod, :to_r, :fdiv, :modulo, :remainder, :abs, :magnitude, :integer?, :floor, :ceil, :round, :truncate, :^, :odd?, :even?, :a
ランダムにグループ分けするRuby演習
## 問題
A、B、C、D、E、Fという6人のグループがありました。 このグループは定期的にみんなで通話をしています。 しかし6人全員で通話はやりずらいので、3人ずつか2人と4人に別れることにしました。 このグループを3人と3人、または2人と4人にランダムに分けるプログラムを書いてください。 このプログラムは実行するごとに結果が変わります。 また表示結果はアルファベット順にしてください。
“`
$ ruby ramdom.rb
[“B”, “C”]
[“A”, “D”, “E”, “F”]
“`## 作成手順
① ramdom.rbファイル作成
(以下は①の中身)
② 6人グループの配列作成
③ ②を利用するメソッド作成
(以下④,⑤,⑥はメソッド内)
④ ②をシャッフルし、3-3でアルファベット順に分割
⑤ ②をシャッフルし、2-4でアルファベット順に分割
⑥ ④,⑤をランダムに条件分岐
⑦ ③メソッド実行
「完全に理解した」状態の僕が「チョットワカル…」になるまでのとある企業の新人研修 part.1
# 導きのはじまり
部門長「研修の一環として、社内で実際に運用するアプリを作ってもらおうと思う」僕「え・・・? 研修なのに実際に使うものを作るんすか? まだ入社して2週間なんですが・・・」
部門長「実際に運用するものを作るから研修になるんだよ? 多少バグってもいいから動くものを作ろう!」
僕「oh…」
部門長「じゃあ、どんなアプリにするか一緒に考えていこうか」
# 自己紹介
みなさん初めまして。
エンジニア1年目の小林と申します。この記事を見てくださっている方々の中には、エンジニアに転職しようと悩んでいる方、エンジニアの新人研修って何をするんだろうと思っている方はいませんでしょうか?
ここでは、僕が今の会社にエンジニア転職して、最初の研修で行ったことをご紹介します。
新人研修の一モデルとして参考になれば幸いです。## ****開発環境****
Ruby on Rails
## ****この記事の対象読者****・エンジニアに転職しようと考えている方
・エンジニア転職のために勉強中の方## 入社前 ~勉強編~
### 著者のスペック
・年齢26歳
・社
railsチュートリアルをなるべく嚙み砕く 1章
今まで何回かチュートリアルに挑みましたが全て挫折しました。
挫折した原因は###### なんとなくの理解で進めてしまった。
これが原因でモチベーションの低下が始まり、挫折というルートを何回も辿っています
今回こそは全部やりきるために、自分なりに噛み砕いて理解し、
###### 人に説明できるようになったら進む
ことを意識してやりたいと思います他の方のための記事にもなったらいいな、、
##### 解釈が間違っているところがあれば教えていただきたいです!!# 第一章
環境構築ですね
私は ubuntu on Windowsを使ってrailsの環境構築をしましたhttps://qiita.com/ksh-fthr/items/64a4e86c8bad08322c94
こちらの記事が私が環境構築したやり方と同じです
1.3まで飛ばします
### 1.3
ここで
cd やmkdirが出てきます。
主要なUnixのコマンドたちですね
cd は change directory の頭文字をとったもので ディレクトリを移る
mkdir は make directory の略で
Ruby | Qiita API で記事を更新する ( PATCHリクエスト )
“`rb
require ‘net/https’
require ‘uri’
require ‘json’uri = URI.parse(“https://qiita.com/”)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = trueQIITA_API_TOKEN = ‘xxxxxxxxxxxxxxxxxx’
# https://qiita.com/YumaInaura/items/yyyyyyyyyyyyyyyyyyy のような記事URLから id が分かる
qiita_item_id = ‘yyyyyyyyyyyyyyyyyyy’patch_url = “https://qiita.com/api/v2/items/#{qiita_item_id}”
patch_request_header = {
‘Content-Type’ =>’application/json’,
“Authorization” => “Bearer #{QIITA_API_TOKEN}”
}
patch_r