- 1. 【個人開発】運動の習慣化を手助けするサービス『トレゴリ』をリリースしました🦍
- 2. pry のエラーメッセージを短くする
- 3. sign-up前やログイン前に記述するbefore~~
- 4. Swiperのコードは階層構造になっていますか
- 5. ruby文法復習用ノート
- 6. Rails7.0.8でsqliteに対してchange_columnするときは必要な全ての要素を指定しよう
- 7. reject(&:empty?)と正規表現などを駆使して配列をいじる場合、grepが良さそう
- 8. 【Ruby】paizaラーニング問題集解答(3けたごとにカンマ区切りで出力)(リベンジ)
- 9. ユーザー管理機能 【devise】について
- 10. [Ruby] enumを使いたい!!
- 11. Ruby Silver ポイントメモ
- 12. RSpecで日時を指定してテストを実行する
- 13. Rails/devise_アカウント情報編集ボタンが反応しない場合解決方法
- 14. Rails_リクエストがDELETEの代わりにGETで送信される場合の対処法!
- 15. 【Ruby】スキージャンプの飛型点計算プログラム
- 16. OpenAPIとは?基本的な構造、書き方、使用例について調べてみた。
- 17. 「Ruby on Rails チュートリアル」でローカル環境を構築して「git push」まで実施する方法・前編
- 18. 【Ruby】paizaラーニング問題集解答(3けたごとにカンマ区切りで出力)
- 19. 【Ruby】Amazon BedrockのClaude3 使ってみた。
- 20. 【Ruby】paizaラーニング問題集解答(スペース区切りの文字列の受け取り・カンマ区切りでの出力)
【個人開発】運動の習慣化を手助けするサービス『トレゴリ』をリリースしました🦍
# まず初めに
皆さん初めまして、[のぞみ](@muscle_gori02)と申します。
私は現在、未経験からのWEBエンジニア転職を目指して、日々学習&転職活動を行なっております。
2024年2月に、運動の習慣化を手助けするゲームフィケーションサービス『トレゴリ』をリリースしました!
**「トレゴリ?なんかゴリラに関係するアプリ何かな?」**
と思われた皆さん、ご明察です…!
今回の記事では、『トレゴリ』の具体的なサービス内容・開発のきっかけ・使用技術…などについて書きました。少々長くなっておりますが、是非最後まで読んでいただけると嬉しいです。笑
# 自己紹介
個人開発のお話に入る前に、少し自己紹介をさせていただきたいと思います🦍
私は地元の高校卒業後、とある製造企業へ入社し生産管理部門の進行長として、約6年間社内製造の進行計画管理に携わってきました。そんな中で色々あり、エンジニアを目指すべく昨年4月に某プログラミングスクールへ入学しました。
(経緯等については長くなってしまうので、省略させていただきます…笑)昨年12月まで仕事と学習
pry のエラーメッセージを短くする
`nokogiri`を使った処理をしてるとエラーが出たときにオブジェクトのテキスト量が多すぎてデフォルトの設定だと肝心のエラーメッセージを確認するためにコンソールを大量に巻き戻らないといけない
`Nokogiri::XML::Document`クラスのエラーでだけ表示を短くしたかったけど方法がわからなかったので例外全てを300文字以上表示しないように変えてみた。
“`.pryrc
Pry.config.exception_handler = proc do |output, exception, _|
output.puts “#{exception.class}: #{exception.message.truncate(300)}”
output.puts “from #{exception.backtrace.first}”
end
“`もっとシンプルな解決策がありそうだけど見つからなかったので当面はこれで我慢しよう。
### 参考
https://github.com/pry/pry/wiki/Customization-and-configuration
sign-up前やログイン前に記述するbefore~~
アプリのコントローラーは各コントローラー名の前にapplication_controllerを通ってから処理をしていく。
そのためbefore~~はこの`application_controller`の中に記述する。
“`ruby
before_action :authenticate_user!
“`
上記の意味は
#### ログインしていないユーザーをログインページの画面に促すことができる。“`ruby
before_action :configure_permitted_parameters, if: :devise_controller?private
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:name])
end“`
#### deviseを使った新規登録をする際に使用。
例えば新規登録でemail,passwordだけでなく名前を追加で新規登録させたい場合に使う。(email,passwordは
Swiperのコードは階層構造になっていますか
## はじめに
Swiperを用いてトップ画像をスライダー形式に変更しようとした時に**思わぬところ**で詰まった時の話です。
## 環境
ruby 3.14
rails 7.0.3.1
swiper 11.0.7
## 用語
**スライダー形式とは**
**複数の画像がスライドのように、一定の間隔で切り替わるもの**です。ホームページのトップ画面などでよく見かけます。スライドしている画像をクリックすると、関連ページに飛べるようにも出来ます。
**Swiperとは**
jQueryプラグインの1つ。
**jQuery**とは、「表示されているページを使いやすくする」ための機能であり、**jQueryプラグイン**とは、「Webサイト作成で特定の機能が欲しいときに、jQueryと併用して利用できる」ものです。簡単な設定で導入できるとても便利なものです。
[Swiperのサイト](https://swiperjs.com/)に書いてあるコードでシンプルな実装が出来る他にも、npmや**yarn**などのパッケージマネージャーを使ってSwiperをプロジェクトにインス
ruby文法復習用ノート
この記事は「こんな書き方もあったな」というのを簡単に __復習__ できるように作りました。そのため、実行結果が書いていなかったり、コード内で未定義の変数を使っていたりします。予めご了承ください。
間違い等ありましたら遠慮なくコメントください。
# 参考
[たのしいRuby、高橋征義、後藤裕蔵著、 まつもとゆきひろ監修、SBクリエイティブ株式会社、第6版2019年](https://www.amazon.co.jp/%E3%81%9F%E3%81%AE%E3%81%97%E3%81%84Ruby-%E7%AC%AC6%E7%89%88-%E9%AB%98%E6%A9%8B-%E5%BE%81%E7%BE%A9-ebook/dp/B07PNN3TYF/ref=tmm_kin_swatch_0?_encoding=UTF8&qid=1671278506&sr=8-1)# 1. 基本
– 動的型付け言語なので、型を明示的に指定はしない
– オブジェクト指向型言語なので、データをオブジェクトで表現する
– `a = 3`
– `b = “文字列”`
– nil : nullのこと
–
Rails7.0.8でsqliteに対してchange_columnするときは必要な全ての要素を指定しよう
# 最初にざっくりまとめ
– `Rails7.0.8`で`sqlite`の`change_column`に対して変更が入った
– その影響で以前とは振る舞いが変わっている
– `change_column`で指定した要素以外の設定がデフォルトに戻ってしまう
– `mysql`では起きない(検証してないけど多分`sqlite`以外は大丈夫)つまり、 **`Rails7.0.8`で`sqlite`に対して`change_column`するときは必要な全ての要素を指定しよう**
# 調べたこと
## `Rails7.0.8`のリリースノート
https://github.com/rails/rails/releases/tag/v7.0.8色々と機能がリリースされていますが、今回の事象に関わるのは以下。この修正で`sqlite`の`change_column`に対して実装が追加されています。
>Fix change_column not setting precision: 6 on datetime columns when using 7.0+ Migrations a
reject(&:empty?)と正規表現などを駆使して配列をいじる場合、grepが良さそう
## 課題
数字の文字列の配列として返却されるbook_idsを、整数の配列に変換し、さらに重複を除去したい。“`book_ids.rb
[“1”, “2”, “2”]
“`## アプローチ1
rejectメソッドを使用して空の要素を除去し、selectメソッドで数値のみを含む要素を選択し、最後にmapメソッドで整数に変換し、uniqメソッドで重複を除去する方法。“`rb
book_ids = book_ids.reject(&:empty?).select { |id| id.match?(/^\d+$/) }.map(&:to_i).uniq
“`こんな感じです。
ただ、このままだとパッと見何をしているかわからず、もう少し工夫できそうです。使えそうなメソッドがないか探し、Enumerable#grepが良さそうだなと思ったので、正規表現をそのまま活用して良い感じにできないか考えてみました。
https://docs.ruby-lang.org/ja/latest/method/Enumerable/i/grep.html## アプローチ2
grep
【Ruby】paizaラーニング問題集解答(3けたごとにカンマ区切りで出力)(リベンジ)
# 大きな数値を 3 けたごとにカンマ区切りで出力 (paizaランク C 相当)
https://paiza.jp/works/mondai/stdout_primer/stdout_primer__specific_split_step6前回正答できなかった問題に再挑戦しました。
### 誤答
“`ruby:practice.rb
# 入力の受け取り
input = gets.chomp.to_s# 出力用変数の定義
output = “”# 出力用変数に3桁ずつ区切った文字列とカンマを追加
input.length / 3.times do |i|
output += “#{input[i*3,3]},”
end# 末尾のカンマを除去して出力
puts output.chomp(“,”)
“`
`input.length / 3`が正しく評価されないようです。### 正答
“`ruby:practice.rb
# 入力の受け取り
input = gets.chomp.to_s# 出力用変数の定義
output = “”# 出力用変数に3桁
ユーザー管理機能 【devise】について
`gemfile`の中の一番下に
“`ruby
gem ’devise’
“`
をかく。(私はよく’device’と書いてしまうので注意が必要だ。。)
その後ターミナル上に
“`ruby
bundle install
“`と書き`rails s`をするとGemの反映を開始される。サーバーが起動した際にgemが反映されるため必須。
“`rails
rails g devise:install
“`
をターミナル上でする。これはdevise専用のコマンドで設定ファイルを作成する必要があるため。deviseを追加したら、最初に1度実行しておく!!その後は
“`ruby
rails g devise user
“`
でUserモデルを作成。すると
config>routes.rb
“`ruby
Rails.application.routes.draw do
devise_for :users
end
“`
と自動的に追記されルーティングする必要がなくなる。
(devise_forは、ユーザー機能に必要な複数のルーティングを一度に生成してくれるdeviseのメ
[Ruby] enumを使いたい!!
Rubyでenum (列挙型)を使いたいときには、クラスでそれらしいものを作ることができます。
– 実装
“`ruby
class Weather
RAINY = “RAINY”
CLOUDY = “CLOUDY”
SUNNY = “SUNNY”class << self def rainy @rainy ||= Weather.new(RAINY) end def cloudy @cloudy ||= Weather.new(CLOUDY) end def sunny @sunny ||= Weather.new(SUNNY) end end def initialize(weather_str) @weather_str = weather_str end # 等価演算子==をオーバーライドするためにto_sを定義しています def to_s @weather_str end # ifやcaseで条件分岐できるようにオー
Ruby Silver ポイントメモ
## はじめに
RubySilverに合格したので、試験対策メモと、実際の試験で間違えたと思われる箇所を共有します。個人的に要注意と思ったところのメモ書きなので、網羅はされておりません。Silver受験のお役に立てば幸いです!
## ポイントメモ
### 演算子– 演算子の優先順位
累乗(**)、四則演算子、&、|、比較演算子、&&、||、範囲演算子、条件演算子(?:)、=、and、or
[演算子式 (Ruby 3.3 リファレンスマニュアル)](https://docs.ruby-lang.org/ja/latest/doc/spec=2foperator.html)
– 複数の三項演算子 `a = 条件式1 ? 条件式2 ? “A” : “B” : “C”;`
| 条件式1 | 条件式2 | 結果 |
| — | — | — |
| true | true | A |
| true | false | B |
| false | true | C |
RSpecで日時を指定してテストを実行する
コード内で、下記のように現在の時間を指定して実行しているコードがあった。
“` ruby
# 現在の日時は営業日かの判定
isWorkDayToday = Time.current.to_date.workday?
“`この「現在の時間」が例えば⚪︎月⚪︎日というように自身が設定した日時でテストをしたい。
## TimeHelpersを使う
今回はRubyのTimeHelpersを使うことにした。メソッドがいろいろありますが、今回はtravel_toを使うことに。
## rails_helper.rbの設定
“` Ruby
# 下記の設定を追加
require “active_support/testing/time_helpers”
RSpec.configure do |config|
config.include ActiveSupport::Testing::TimeHelpers
end
“`## テストを書く
“` Ruby
require ‘active_support/testing/time_helpers’RSpec.descri
Rails/devise_アカウント情報編集ボタンが反応しない場合解決方法
# はじめに
初歩的な記述ミスが原因で起こったエラーですが、
原因を見つけためにかなり時間がかかったのでまとめます:joy:# 環境
・Ruby 3.1.2
・RubyGems 3.3.7
・Bootstrap 4.6.2
・class Public::UsersController < ApplicationController作成済み ・Deviseを使用してユーザー認証機能を実装 # 1.発生した問題 マイページ内にある「編集する」ボタンを押して会員情報編集画面に遷移したあと、 会員情報を編集し、「編集内容を保存」を押すと、更新されない(__ボタンが反応しない__)ことがある。![スクリーンショット 2024-03-18 010002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3724261/22736ad3-01f6-2af3-32b5-e92d3b9a1f11.png) ![スクリーンショット 2024-03-17 212140.png](https://qiita-image-st
Rails_リクエストがDELETEの代わりにGETで送信される場合の対処法!
# はじめに
2023年12月からプログラミング学習を始めました :smiley:
アウトプットのために今まで起こったエラーや学習したことをまとめようと思います。
初心者のため、解釈などに誤った点があるかもしれません💦
その際はお気軽に教えて頂けますと大変助かりますm(__)m!!# 環境
・Ruby 3.1.2
・RubyGems 3.3.7# 1.発生した問題
Deviseを使ってWebアプリにログアウト機能を実装したが、
ログアウトボタンを押すと、[DELETE]メソッドで送信したいリクエストが[GET]メソッドとして送信されてしまい以下のようなエラーが表示される。![スクリーンショット 2024-03-17 230022.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3724261/82b7e1c6-50e2-efa8-eb30-c0ba1a2a6b87.png)
# 2.疑った原因
①ルーティングの設定に間違いがある。
[■参照した記事](https://qiita.com/r
【Ruby】スキージャンプの飛型点計算プログラム
スキージャンプの飛型点を計算するプログラムです。
5人の審判が出した飛型点の1番高い点と1番低い点を除いた3人の飛型点の合計値になります。
“`ruby
num = 5
data = gets.chomp
array1 = data.split(‘ ‘)
sum = 0
array2 = []
count1 = array1.size()
for i in 0…count1 do
data2 = array1[i].to_i
array2.push(data2)
end
count2 = array2.size()
max_value = array2.max
min_value = array2.min
totai_value = array2.sum
sum = totai_value – max_value – min_value
sum = sum.to_fputs sum
“`
実行結果は下記の画像です
![test1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.co
OpenAPIとは?基本的な構造、書き方、使用例について調べてみた。
# はじめに
お久しぶりです。前回から2週間空いてしまいました。今回はOpenAPIの記事になります。
プログラミング学習コミュニティ「Progaku」では現在チーム開発を行なっております。そのチーム開発のタスクの中でOpenAPIを書くこと、CommitteeRailsを使用してRspecのテストへの反映を行いました。
どちらも初めて使用したので、色々と調べる中で知ったことをまとめていきたいと思います。## OpenAPIとは?
https://www.openapis.org/
公式の見出しを翻訳した結果がこちら(笑)
> OpenAPI仕様は、HTTP APIを記述するための正式な標準を提供します。
これにより、APIがどのように動作するかを理解したり、クライアントコードを生成したり、テストを作成したり、設計標準を適用したり、その他多くのことができるようになります。簡単にいうとAPIの仕様書になります。
ただ仕様書という枠に収まらず、仕様書の内容からテストを作成したり、コードを自動生成したり、様々なことができます。OpenAPIを使用するメリットは以下のようなも
「Ruby on Rails チュートリアル」でローカル環境を構築して「git push」まで実施する方法・前編
## はじめに
こんにちは、@kosei-matsubaraです。
Web系エンジニアの転職を目指して「Ruby on Rails チュートリアル」の学習を始めました。
「Ruby on Rails チュートリアル」の第一章を後半まで進んだところ「GitHub Codespaces」の自動ログアウトおよび再接続が手間だと感じるようになりました。
「Ruby on Rails チュートリアル」ではクラウド環境での開発を推奨しております。
ですが今後ポートフォリオを作り、Web系開発企業ではローカル環境での開発が前提になると想定しています。
したがって最初からローカル環境で開発を行い、早々に今後の作業環境に慣れた方がいいと考えローカルで開発構築することにしました。
ローカル環境構築までの手順を公開することで、同じく「Ruby on Rails チュートリアル」をローカル環境を構築する方のご参考になればと思い記事を投稿しました。
なお、当該記事はゼロからRailsインストールまで、次回投稿記事でRails以降から「git push」までを投稿予定です。
## ローカル環境構
【Ruby】paizaラーニング問題集解答(3けたごとにカンマ区切りで出力)
# 大きな数値を 3 けたごとにカンマ区切りで出力 (paizaランク C 相当)
https://paiza.jp/works/mondai/stdout_primer/stdout_primer__specific_split_step6
### 自分の解答
(分かりませんでした)
### ChatGPTの解答
“`ruby
# 入力を受け取る
n = gets.chomp# カンマ区切りで出力するための変数
output = “”# 数値を3けたごとにカンマ区切りで出力する
(n.length / 3).times do |i|
# 3けたごとの部分文字列を取得し、カンマを付けてoutputに追加
output += “#{n[-3*(i+1), 3]},”
end# 末尾のカンマを除去して出力
puts output.chomp(‘,’)
“`このコードでは、まず与えられた数値Nを3桁ごとに区切ってカンマを付け、その後、末尾のカンマを除去して出力します。
### 自分の再解答
上記のChatGPTの解答では、以下のような入力と出力となる。
“`
【Ruby】Amazon BedrockのClaude3 使ってみた。
先日、Amazon BedrockでClaude3が使用可能になりました!
本記事では、現在開発中のCLIツール「[omochi](https://github.com/mikik0/omochi)」で使用している Amazon Bedrock のモデルをClaude2からClaude3にアップグレードした際の変更点について紹介します。
Amazon Bedrock のモデルをClaude2 からClaude3 にアップグレードしたい方やRuby でAmazon Bedrock のClaude3 を使用したい方の参考になれば幸いです。
### 事前準備
以下の準備が完了していることを確認してください。
* Rubyのインストール
* AWSアカウントの作成
* モデルアクセスの許可できていない項目がある場合は、以下を参考に進めてください。
https://www.ruby-lang.org/ja/documentation/installation/
https://docs.aws.amazon.com/bedrock/latest/userguide/setti
【Ruby】paizaラーニング問題集解答(スペース区切りの文字列の受け取り・カンマ区切りでの出力)
# カンマ区切りで 2 つ出力 (paizaランク D 相当)
https://paiza.jp/works/mondai/stdout_primer/stdout_primer__specific_split_step1
### 自分の解答
“`ruby:practice.rb
num = gets.chomp.splitputs “#{num[0]},#{num[1]}”
“`
### ChatGPTの解答
以下は、与えられた条件に基づいて問題を解決するRubyのコードです。“`ruby
input = gets.chomp.split(‘ ‘)
puts input.join(‘,’)
“`このコードは、入力を受け取り、半角スペースで分割して配列に格納し、それらの要素をカンマで結合して出力します。