- 1. RailsでDALL-E3のAPIを使ってみる
- 2. Progate +α メモず【Ruby on Rails ②③】
- 3. rails バリデーション機能について
- 4. 名前の由来 機能 (初心者向け)
- 5. sidekiqに触れてみた
- 6. 便利なルーティングコマンド
- 7. 【Rails】小学校教員、初心者が現場で使える時間割アプリを作った話
- 8. Rails SQLでデータ整形(ROUMD, SUM)
- 9. インスタンスとは?
- 10. 【Rails】deviseを使ったユーザー管理 導入方法
- 11. Progate +α メモず【Ruby on Rails ①】
- 12. Railsのparamsの基本とログでの確認方法
- 13. データベースに作成されたカラムを確認するには
- 14. 【備忘録】Rails7 Stimulus セレクトボックス 親子 複数 連動
- 15. 【Rails】マークダウン形式で入力された表をHTML側で表として表示してみた
- 16. 【Rails】fly.ioでコンソールを使ってDBに初期データを保存する方法
- 17. 【Ruby on Rails】stimulus+ActionCableでリアルタイムチャット機能の実装(初学者向け)
- 18. AWS SDKでS3バケット内のフォルダ構造を維持したまま、ZIPファイル形式でダウンロードする方法
- 19. Bootstrapが難しいので、苦し紛れにJavaScript関連用語だけざっくり調べた
- 20. Rails + Ruby 3.3.0でYJITを使ってみる
RailsでDALL-E3のAPIを使ってみる
Ruby on Railsを使用してDALL-E3 APIを介して画像を生成する方法を紹介します。
## 環境
:::note info
ruby 3.2.2
Rails 7.0.8
:::## 完成図
### 生成前
![rails-dall-e3-before.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/849608/2a5a9781-d604-bda1-d1fe-cbaac9f18d92.png)### 生成後
![rails-dall-e3-completed.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/849608/5fdc3de8-c9f2-8662-2b03-47a8d326013c.png)
## アプリケーション作成
DALL-E3を使った画像生成は、servicesディレクトリ下のopen_ai_service.rbファイルです。https://github.com/shan
Progate +α メモず【Ruby on Rails ②③】
# はじめに
今回はデータベース周りが主軸……と思ったけど、結果的にいろいろと。
なんかいつの間にRails②を終えて③に入ってました。怖。
なのでまとめて投稿します。今回も、気になる見出しがあれば見ていただけると嬉しいです!
# メモず
## `@変数`:Controllerとviewからアクセスできる
なんで`@`つけると参照できるの?別ファイルじゃないの?
→個人的には`html`と`script`の関係性に置き換えて納得しました。RUNTEQだと `html`と`css`の関係がわかりやすいでしょうか。
– `html`の中に`css`がある(`stylesheet = css`)
– `html`で`class`や`id`をつけることで、`css`からもアクセスできる
(`css`の場合はより広く、より深くアクセスできますが)
– `@`をつけてない変数とは、`css`でいうところの`class`も`id`もない`html要素`のイメージ
(繰り返しになりますが、`css`だとタグでもアクセスできる。まあイメージということで)## マイグレーションファイル
rails バリデーション機能について
## 結論
validation:検証
オブジェクト(Hoge.newなどで生成されたものなど)がデータベースに保存される(newだけでは保存されない、save,
criate,updateメソッドで初めてデータベースに保存される)前に、本当にデータベースに保存していいのか検証してくれる機能## とてもシンプル
“`app/models/hoge.rb
class Hoge < ApplicationRecord validate :カラム名,presence: true end ``` presence: 出席する = 空文字を防ぐ ## もしユーザーが空文字を入力していたら? ``` nil => false
“`
と判断される。## バリデーションヘルパー
目次.2 で詳細が記載されています。
https://railsguides.jp/active_record_validations.html以上です。
名前の由来 機能 (初心者向け)
2022/07/13 編集中
私はプログラミング初学者です。
学習する度に、新しい知識の情報量に圧倒されます。
とくに学習を始めた最初の頃は意味が全く分からない単語も多く、学習に対して強い抵抗感を感じました。。
なので、初学者向けに少しでも抵抗感を軽減することができればと思い、機能と名前の由来について記事にすることにしました。# Ruby
元々、6月に生まれたpealというプログラミング言語が存在していた。pealの発音は6月の誕生石である真珠(Pearl)と同じである。
Rubyは7月に生まれた。「Perlに続く」という意味で、7月の誕生石のルビーから名付けられた。# gem
RubyGemsが公開しているRubyのパッケージのこと# Rails
Rubyなどの言語を使って簡単にアプリなどを制作できるような枠組みである。お膳立てという意味合いで「レール」と名付けられた。
RailsでWebページを装飾するには?# rbenv
# パッケージ
関連するさまざまな要素を1つにまとめたものや、市販・出来合いの製品などの意味で使われる。 特定の業務用に作成されたプログラム
sidekiqに触れてみた
# はじめに
業務の中で非同期処理を行いたいタスクがあり、システムにsidekiqを新しく導入することで実装しました。
改めて復習も兼ねて記事を書くことにしました。# 実装
### sidekiq用のサーバーを構築
“`docker-compose.yml
sidekiq:
uild:
context: .
dockerfile: Dockerfile
volumes:
– .:/app
env_file:
– .env
ports:
– 3000:3000
command: bundle exec sidekiq -C config/sidekiq.yml
“`### GemFileにsidekiq追加し、bundle install実行
“`ruby:GemFile
gem ‘sidekiq’
“`### sidekiqの各種設定
1\. アダプターをSidekiqにする
ActiveJobをsidekiqと連携させる。
“`config/applicatio
便利なルーティングコマンド
今までルーティング結果を確認するときは「rails routes」コマンドを使っていました。ポートフォリオ作成時にルーティングが複雑になり、このコマンドの表示がとても見にくくなったため、もっと見やすく表示してくれるコマンドがないかを探したところ、ありました!今回はそれらをご紹介いたします!
※初心者目線で書いていますので、もし間違っているところがありましたらご指摘いただけると嬉しいです🙇🏼
### 対象のバージョン
Rails 6以降
※Rails 5以前はこれからご紹介するコマンドは使えません。### rails routesコマンドとは?
routes.rbに設定したルーティングの結果を表示するためのコマンドです。
以下のように表示されます(作成したポートフォリオのルーティングを使って説明をしていきます)。[![Image from Gyazo](https://i.gyazo.com/6c96ef4ab702330373aafa66aaf18021.png)](https://gyazo.com/6c96ef4ab702330373aafa66aaf18021)
ル
【Rails】小学校教員、初心者が現場で使える時間割アプリを作った話
# 制作背景
Rails SQLでデータ整形(ROUMD, SUM)
## はじめに
Railsでデータを取得する際に、SQLでROUND内でSUMをして、平均や率として取得する際に一癖あったので備忘録として残しておきます。
## やりたいこと
レコードからデータを取得するときに率として取得したい。
`一部 / 全体 * 100`のようなイメージ
普通にレコードを取得してから計算することもできるが、アプリの仕様上やクエリ上、viewへの表示、CSVダウンロードなどにも使用するため取得時にデータを整形しておくことが良いと判断しております。
## コードサンプル
“`rb
select(
“ROUND((SUM(一部) / NULLIF(SUM(全体), 0.0)) * 100)
as 算出したい率,
…”
)
“`ポイントとして`NULLIF()`を用いることで分母が`0.0`の場合でもエラーにならないようにしている。
筆者はこの`0.0`の箇所を`0`にしていたがために、期待する結果にならず多くの時間を費やした。
インスタンスとは?
# はじめに
インスタンスがなんなのか説明できないので備忘録も兼ねてまとめます。
# インスタンスとは?
クラスを元に生成された実体のこと。
簡単に言えば、クラスは設計図であり、その設計図に基づいて作られる実際の物体がインスタンスです。
“`ruby
# クラスの定義
class Car
def initialize(make, model)
@make = make
@model = model
enddef display_info
puts “Make: #{@make}, Model: #{@model}”
end
end# インスタンスの生成
car_instance = Car.new(“Toyota”, “Camry”)# インスタンスの利用
car_instance.display_info # 出力: Make: Toyota, Model: Camry
“`
この例では、`Car`クラスが定義され、そのクラスから`Car.new(“Toyota”, “Camry”)`としてインスタンスが生成されています。`i
【Rails】deviseを使ったユーザー管理 導入方法
Railsアプリの開発中「マイページを作りたい…」という場面がありました。そこで、Railsでのユーザー管理を簡単に実現するために、『devise』というgemをRailsに導入する手順を整理しました。
『devise』をRailsに導入する具体的な手順は、次の内容でまとめました。
* STEP①:deviseのインストール
* STEP②:Userモデルの作成
* STEP③:usersテーブルの作成
* STEP④:deviseのビュー作成# STEP①:deviseのインストール
まず、`Gemfile` へ次の追記をします。
“`Ruby:Gemfile
gem ‘devise’ # 「最後の行」に追加
“`
次に、ターミナルで次のコマンドを実行します。
“`bash:Terminal
% cd (アプリがあるディレクトリのパス指定) # アプリがあるディレクトリへ移動% bundle install
“`
`bundle install`実行後、次のようなログが表示されれば成功です。
Progate +α メモず【Ruby on Rails ①】
# はじめに
Progateに記事見つかっちゃったマンです。ありがとうございます![Progate +α メモず 【Ruby】](https://qiita.com/kohki_takatama/items/383ea364bbf41fdae95e)に続き、Rails編第一弾です(複数になる予定)。
範囲:ProgateのRube on Rails 5 l
# メモず
## `MVCモデル`のざっくりとした理解 ※学習前
`M: モデル`:俗に言うバックエンド。**舞台でいう裏方**。ユーザーからは見えない部分。
`V: ビュー`:俗に言うフロントエンド。**舞台でいう役者**。ユーザーに見せる部分。
`C: コントローラー`:モデルとビューの橋渡し・選定をする**舞台監督**。役者と裏方の調整、選定。
## 最初の呪文:`$ rails generate controller home top`とは?
`home`という名前の`controller`を`generate`する。
`top`という名前のアクション(メソッド)と、そのアクションのレスポンスとして表示される`top.h
Railsのparamsの基本とログでの確認方法
### Railsのparamsとは?
Ruby on Railsでの開発において、paramsは非常に重要な概念です。これは、ユーザーから送信されたデータ(フォームの入力、URLのクエリパラメータなど)をコントローラー内で取得するために使用されるメソッドです。### paramsの基本
paramsは、ユーザーからのリクエストに含まれるパラメータを含むハッシュのようなオブジェクトです。例えば、フォームから送信されたデータやURLのクエリパラメータを取得する際に使用します。### パラメータのログでの確認
Railsアプリケーションでは、開発中に送信されたパラメータをログで確認することができます。これはデバッグに非常に役立ちます。1\. サーバーログの確認:
Railsサーバーを起動し(rails s)、ユーザーからのリクエストを行います。
ターミナルに表示されるサーバーログを確認します。2\. パラメータの検索:
ログ内でParameters:という部分を探します。これに続く情報が、リクエストに含まれるパラメータです。3\. 例:
![im
データベースに作成されたカラムを確認するには
データベースに作成されたカラムを確認するには、ターミナルに
“`ターミナル
docker compose run web rails c
“`
を打ってコンソールを立ち上げてから、
“`
User.column_names
“`
を打つと、カラムが表示される。
“`
=> [“id”, “last_name”, “first_name”, “email”, “crypted_password”, “salt”, “created_at”, “updated_at”]
“`
【備忘録】Rails7 Stimulus セレクトボックス 親子 複数 連動
会社を選択すると、現場と品目の選択肢に、アソシエーションされているレコードをセットする
![add_flow7.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324819/67806d9c-4a2f-2c56-41b6-a9b76eb46162.gif)“`config/routes.rb
resources :companies do
get ‘sites’, on: :member
get ‘waste_kinds’, on: :member
end
“`“`app/controllers/companies_controller.rb
def sites
company = Company.find(params[:id])
sites = company.sitesrespond_to do |format|
format.json { render json: sites }
end
endd
【Rails】マークダウン形式で入力された表をHTML側で表として表示してみた
どうもこんにちは。
今回は以下のように入力されたマークダウン形式の表をHTML側では表として表示できるようにしてみたいと思います。
“`text
| タイトル | 値 |
| — | — |
| 名前 | テスト太郎 |
| 年齢 | 25 |
| 性別 | 男 |
| 出身 | 東京都 |
“`# 実装手順
## 1. gemを導入
今回は`Redcarpet`というGemを使用します。
“`Gemfile
gem ‘redcarpet’
“`## 2. bundle installをする
ターミナルで以下のコマンドを叩きます。
“`
$ bundle install
“`## 3. ApplicationHelperを使用してメソッドを定義
メソッドは、HTMLで画面表示したい時に使用するので、ヘルパーメソッドとして定義します。
私は色々な箇所で使用したかったので、`app/helper/application_helper.rb`に定義しましたが、`users`の機能でのみ使用する場合などは、`app/helper/users_he
【Rails】fly.ioでコンソールを使ってDBに初期データを保存する方法
### 概要
開発環境ごとにデータベースが作られているため、デプロイ後、ローカル環境で作成していた初期データを本番環境にて作成する必要がありました。
そのときに「fly.io上でコンソールを使ってデータを作成する方法」を実施したので、その方法を記載します。今回は、以下の2つのパターン挙げます。
①Rakeタスクの実行(csvファイル読み込みのため)
②seedファイルの読み込み※ 事前にfly.ioへのデプロイを完了し、データのもととなるcsvファイル及びseedファイル、読み込みのためのRakeタスクについては作成済みとします。
#### 環境
Rails 7.08
Ruby 3.1.4
Fly.io
Docker利用なし### fly.ioでコンソールの立ち上げ (共通)
“`
$ flyctl console
“`
(事前にflyctlのインストールを実施しておく。https://fly.io/docs/hands-on/)### ①Rakeタスクの実行(csvファイル読み込みのため)
fly.ioで起動した
【Ruby on Rails】stimulus+ActionCableでリアルタイムチャット機能の実装(初学者向け)
私は現在、未経験からのエンジニア転職に向けてプログラミングスクールで学習をしている、いしかわと申します。
今回Webアプリケーションの個人開発を進めている際、リアルタイムチャット機能を実装したので自身のアウトプットとして記事にしました
どなたかの参考になれば幸いです。:::note warn
プログラミング初学者なので、内容に誤り等ある可能性があります
誤りがありましたら教えてくださると幸いです
:::
# StimlueとActionCabelを用いたリアルタイムチャット機能の実装
今回は既存のRequestオブジェクト毎にリアルタイムチャット機能を実装しています
## 知っておくべき知識
### ActionCable
WebSocketを利用してサーバーサイドとクライアントサイドで連続的(持続的)な通信を確立している
連続的な通信を確立していることから、サーバーサイドとクライアントサイドでリアルタイムの通信が可能になる
チャットメッセージやリアルタイムの更新など、サーバーサイドとクライアントサイドの状態を同期することができる### Ajax通信
似ているものとしてAja
AWS SDKでS3バケット内のフォルダ構造を維持したまま、ZIPファイル形式でダウンロードする方法
## はじめに
Fusicでエンジニアをしています。みかみよしきです。
Fusic Advent Calendar を機に記事執筆に初挑戦しました。よろしくお願いします。AWS SDKを使用してS3バケット内のファイルをフォルダ構造を維持したままZIP形式でダウンロードする方法を解説します。この機能はS3上の大量データを効率的に取得するために有用です。
Ruby on Rails環境でAWS SDKを用いてこの機能を実装する方法について、コード例を提示しつつ説明していきます。S3バケットからのデータ取得、ZIPファイルの作成、そしてクライアントへのダウンロードまでの工程を行います。
## 前提知識
AWS SDK、Amazon S3、rubyzipについて前提知識を説明します。### AWS SDK
AWSのサービスをプログラムで利用するためのツールキット(Software Devlopment Kit)です。このSDKを使用することで、AWSのリソースを直接コードから管理できます。### Amazon S3
Amazon S3は、インターネット経由で利用できるオブジェ
Bootstrapが難しいので、苦し紛れにJavaScript関連用語だけざっくり調べた
:::note warn
**注記**
この記事の投稿者はRuby on Rails初学者であり、自身の学習の備忘録目的で記事投稿を行なっております。
情報の正確さには最大限注意をしておりますが、もし誤り等がございましたらお知らせいただけますと幸いです。
:::ご覧いただきありがとうございます!
**Ito** と申します!
Ruby on Rails初学者です。## 調べた動機、経緯
初めてのアプリを作成しようと思い`Rails new`後、Bootstrapを導入しようとしたら**数時間ハマりました。**
開発環境はRails7系を使用していますが、ChatGPTに質問をしたところWebpackerを薦められました。JavaScript周りの知識があればChatGPTのアドバイスの矛盾点に気付けたのでしょうが、知識の持ち合わせがなかった私は、**なすがままに振り回されてしまいました。**
[![Image from Gyazo](https://i.gyazo.com/0e9ab7824756f96f76b0bce9dda2370a.png)](https:
Rails + Ruby 3.3.0でYJITを使ってみる
## Rubyインストール時にRust環境が必要
Ruby 3.3.0では簡単にYJITが選択できるようになっているのですが、前提条件としてRubyビルド時にRustコンパイラがインストールされている必要があります。Rustが入っていない場合、YJITが使えないRubyがビルドされてしまうので注意しましょう。
これはrbenvでRubyをインストールする場合も例外ではありません。Macの場合は次のような手順で事前にRust環境をインストールしておきます。
“`
$ brew install rustup-init
$ rustup-init
$ exec $SHELL -l$ rbenv install 3.3.0
“`rubyを`–yjit`オプション付きで実行するとYJITが有効になります。バージョン情報を確認すると「+YJIT」と表示されて、YJITが有効になっていることが確認できます。
“`
% ruby -v –yjit
ruby 3.3.0 (2023-12-25 revision 5124f9ac75) +YJIT [arm64-darwin23]
`