- 1. 【LINE WORKS】rubyでオウム返しBotを作る
- 2. 【クイズ】. の使い方を見分けろ!
- 3. 【Rails】ノイズになる警告を一時的に抑制する方法あれこれ【乱用厳禁】
- 4. ActiveAdminのカスタマイズ集 – 実用的で頻出な記法をコードサンプルにまとめてみた
- 5. JavaScript ページをリロードしないと動かない(RubyonRails)
- 6. Rubyの等値を判断するメソッド・演算子の理解[equal?, ==, eql?, ===]の違い
- 7. 【Ruby】クラス・モジュールについて理解を深める
- 8. ActiveRecord の where in 句 の 空配列
- 9. Ubuntu 24.04 LTSにすると多分マストドンv4.2ブランチじゃないと上手く動かないんじゃねって話
- 10. 「ローカル環境 × Rails × Render」でデプロイ
- 11. 連続的な値の配列
- 12. railsの環境構築を半日かけて構築した話
- 13. Railsにおけるモデルのscopeメソッド
- 14. 生まれたてのuserマイグレーションファイルをじっくり見てみた
- 15. gem install 時の permissions エラーの対応
- 16. 【Ruby環境構築】AlmaLinuxでRubyのバージョンを指定してインストールする
- 17. 【Rails】form_withとかlocal: trueとかdata: { turbo: false }を理解してなかったので色々調べた
- 18. GroveBeginnerKit を、C++(Aruduino)とRuby(ラズパイ,Rboard) で使う I2C – 気圧センサー編
- 19. FormObjectを編集に対応させる
- 20. エラーが怖い?それならSyntax Errorを「起こす」ことから始めよう
【LINE WORKS】rubyでオウム返しBotを作る
# はじめに
前回、AWS SAMのサンプルを実行してたので、今回はそれを利用してline worksのオウム返しbotを構築した備忘録になります前回の記事は[コチラ](https://qiita.com/youfuku/items/38f582889a05027f713f)
## 初期設定
まずは、環境の新規構築を行います
“`shell:コマンド
$ sam init
$ 省略
Project name [sam-app]: oumu
$ 省略
$ cd oumu
$ mv hello_world/ oumu/
“`## テンプレート改修
“`diff_yaml:oumu/template.yaml
AWSTemplateFormatVersion: ‘2010-09-09’
Transform: AWS::Serverless-2016-10-31
Description: >
oumuSample SAM Template for oumu
# More info about Globals: https://github.com/awslabs/
【クイズ】. の使い方を見分けろ!
# はじめに
プログラミング全般において、`.`がさまざまな形で使われています。
今回は、クイズ形式の記事です。`.`の知らない使い方があるかも?
全11問、お楽しみいただければ幸いです。
# クイズ
### 1
以下の使われ方をするとき、`.`は何を表す?
“`bash
ls -a .
cd ./dir
cp -r . /path/to
“`答え
「カレントディレクトリ」
「現在のディレクトリ」を指します。
### 2
以下の使われ方をするとき、`..`は何を表す?
“`bash
cd ..
ls ..
cat ../file
“`答え
「親ディレクトリ」
一つ上の階層(ディレクトリ)を指します。
### 3
以下の使われ方をするとき、`.`は何を表す?
“`
example.txt
example.json
“`答え
「拡張子」
【Rails】ノイズになる警告を一時的に抑制する方法あれこれ【乱用厳禁】
## はじめに
Railsの開発をしているとログやターミナルに警告が表示されることがあります。たとえば以下はRSpecのテストコードを実行したときの実行結果です。
いくつか警告(warning)が表示されています。“`
$ bundle exec rspec spec/models/user_spec.rb
warning: parser/current is loading parser/ruby31, which recognizes 3.1.4-compliant syntax, but you are running 3.1.3.
Please see https://github.com/whitequark/parser#compatibility-with-ruby-mri.
DEPRECATION WARNING: `Rails.application.secrets` is deprecated in favor of `Rails.application.credentials` and will be removed in Rails 7.2. (cal
ActiveAdminのカスタマイズ集 – 実用的で頻出な記法をコードサンプルにまとめてみた
## はじめに
ActiveAdminの使用を続ける中でカスタマイズ時に頻繁に使用する記法が見えてきたので、それらを詰め込んだコードサンプルを掲載します。
## コードサンプルの特徴
– ActiveAdminで `app/admin/…` に配置する1ファイルとして作成した
– 私がよく書く記法を詰め込み、TIPSとしても読めそうな内容にした
– テンプレートファイルにも流用できる構成を目指した
– なるべく公式ドキュメントに沿ったが、一部に公式外の記法も混ぜた## 想定する読者
– ActiveAdminを使ったことがある人
– インストール方法については記載しません
– ActiveAdminの便利な記法やカスタマイズ方法を探している人## バージョン情報
記事公開時点の最新バージョンを使用します。
– Ruby: `3.3.1`
– Ruby on Rails: `7.1.3`
– ActiveAdmin: `3.2.0`## サンプルのテーブル構成
今回は図の中央にある `company_users` の管理画面を作成します。
has_man
JavaScript ページをリロードしないと動かない(RubyonRails)
RubyonRailsにてフリマアプリ実装中、JavaScriptがうまく動かなかった件について。
初学者のアウトプット用記事なので、情報の信憑性の低さについてはご容赦ください。同じところで苦戦している初学者の方にも参考になれば幸いです。当記事はRails7で実装した際の記録であり、具体的にはgemfileに以下のTurbolinksに関する記述がある場合を想定しています。該当しない場合は、当記事の内容が合わない場合がありますのでご注意ください。
“`ruby:gemfile
# Hotwire’s SPA-like page accelerator [https://turbo.hotwired.dev]
gem “turbo-rails”
“`# 不具合の具体的な内容
商品出品ページで販売価格を入力した時に、販売手数料と利益も同時に表示されるようにしたい。JavaScriptの実装後、ローカル環境で動作を確認したときに問題発生。JavaScriptのコードは問題なく書けているのに、商品出品ページに遷移しても動かない。なぜ?商品出品ページを開いた状態でリロードする
Rubyの等値を判断するメソッド・演算子の理解[equal?, ==, eql?, ===]の違い
# equal?, ==, eql?, ===の違いを解説
この記事は下記のような人を対象にしています。
– 駆け出しRubyエンジニア
– プログラミング初学者## 結論
equal・・・同じobject_idの場合にtrueを返す
== ・・・人の目で見て自然であればtrueを返す
eql・・・同じクラスで中身も同じならtrue、中身が同じでも別クラスだったらfalseを返す
=== ・・・case文のwhen節で暗黙的に使われている## equal?
equal?メソッドは、同じobject_idの場合にtrueを返します。
“`ruby
a = “apple”
b = “apple”
a.equal?(b)
=> false
“`
文字列の内容が同じappleなのに、falseなのは、aとbそれぞれが持つobject_idが異なるから。では、object_idとは??
オブジェクトにランダムに割り当てられる、重複しない整数のこと!
Rubyでは、重複しない整数が、各オブジェクトに1つずつ割り当てられています。
各オブジェクトに対して一意な整数を返します。あ
【Ruby】クラス・モジュールについて理解を深める
# クラス
## クラスの定義
“`rb
class Foo
# 初期化時に実行されるメソッド
def initialize(x)
# インスタンス変数に値を保持
@x = x
end# インスタンスメソッド
def method1
@x
end
end
“`:::note
クラス名は**定数**であるため、大文字で始めないと構文エラーとなる。
┗ 定数の中にクラスを格納している。
:::## クラス変数
“`rb
class Foo
def initialize
@@i = 1
enddef return_i
@@i
end
endclass SubFoo < Foo def initialize @@i = 100 end end foo = Foo.new p foo.return_i #=> 1
sub_foo = SubFoo.new
p foo.return_i #=> 100
p sub_foo.return_i #=
ActiveRecord の where in 句 の 空配列
### 通常の where in 句
こういう書き方をすると思います。
“`sql
select * from table_name where id in (1, 2, 3, 4, 5)
“`### これをそのまま active_record で表現すると
“`ruby
TableName.where(id: [1, 2, 3, 4, 5])
“`ですよね。
### in の中身が空だと
“`sql
select * from table_name where id in ()
“`これは流石にエラーになりますよね?
### active_record でこれをやると…
“`ruby
TableName.where(id: []) #=> []
“`お、エラーじゃなく空配列だ。
### どうなってる?
to_sql で active_record は発行する sql を視認出来ますよね?
早速確認“`ruby
TableName.where(id: []).to_sql #=> SELECT `table_name`.* F
Ubuntu 24.04 LTSにすると多分マストドンv4.2ブランチじゃないと上手く動かないんじゃねって話
## ポイントリリース前に24.04 LTSを入れました
nodejsが18以上になっていました。動かしていたのがv4.1ブランチだったので象バンバンになりました。
nodejsだけの問題だけだと思っていたらそうでもない様子。postgreSQLも10がコケていました。Mastodonのサービスは動いている。
めんどくさそうです。
## v4.2ブランチにしてみました
rubyも3.2.3をいれて、さあ!
やっぱり象バンバン。DB動いてないからそらそうか。
## ログを見る
postgreSQL10のログを見るとTimezoneが「Japan」になっていてむーりーってなって落ちている。そんな書き方は無い!
「Asia/Tokyo」にしたところ動いて、DBがマイグレーションできて動きました。
## 時間がかかりました
DBが動いてないというのに気づくのが遅くてやたら時間だけかかりました。ログを見るというのは大切ですね。
v3ブランチとv4.0ブランチはEoLになったのでUbuntu 24.04 LTSにアップグレードするぞという人たちはもりもりDBマイグレーション
「ローカル環境 × Rails × Render」でデプロイ
# はじめに
皆さま、こんにちは、すみ(@sumisumi2000) と申します。
2024 年 1 月 20 日より、オンラインプログラミングスクール RUNTEQ にて、Ruby on Rails を学習しています。今回の記事では Docker を使わずに、ローカルで環境構築を行い、 Render.com でデプロイ&データベース連携するまでの流れをまとめました。
https://render.com/
# 動作環境
– macOS Sonoma 14.4.1
– Ruby 3.3.0
– Rails 7.1.3.2# ローカル環境構築
この記事では Docker を使用しません。
なので、ローカル環境(自身のパソコンの環境)で Ruby や Rails などをインストールする必要があります。### 目次
1. [Homebrew のインストール](#homebrew-のインストール)
2. [rbenv のインストール](#rbenv-のインストール)
3. [Ruby のインストール](#ruby-のインストール)
4. [Rails のインストール]
連続的な値の配列
# “`*()“`をつける
“`rb
irb(main):175:0> b.length
=> 1
irb(main):176:0> b = [*(1..2)]
=> [1, 2]
irb(main):177:0> b.length
=> 2
irb(main):178:0>
“`# 感想
こんな感じでできると思ったけどエラーなるので困ったけどできてよかった。# 出典
https://qiita.com/ntakuya/items/c82bb6a9b3336ee77a87
railsの環境構築を半日かけて構築した話
こんにちは!初投稿です!
今回は半日近く格闘をしたrailsの環境構築の話を備忘録を兼ねてお話ししたいと思います。
環境はDockerで構築しました。## Dockerを立ち上げるまで
“`
$cd 作業フォルダ
$docker compose build
$docker compose up -d
“`
上記で、Dockerを立ち上げていきます。## Dockerに入る
“`
$docker compose exec web bash
“`## 諸々インストール
“`
$bundle install
$yarn install
“`
上記で、構築に必要なものをインストールしていきます。
bunle⇨ライブラリをインストール
yarn⇨パッケージを一括管理できる## エラーが起きたコマンド
“`
$bin/rails db:create
“`
こちらを入力した際、下記のエラーが発生した。
“`
Caused by:
Mysql2::Error::ConnectionError: Unknown MySQL server host ‘db’ (-2)
`
Railsにおけるモデルのscopeメソッド
# はじめに
先日、業務で`scope`メソッドでの実装したので、備忘録として記事にしたいと思います。この記事では、`scope`メソッドの基本的な使い方をまとめてみました。
# モデルのscopeメソッドとは?
`scope`メソッドは、よく使用されるクエリをメソッドとして定義することができる機能です。
これにより、複雑なクエリを簡単に再利用できるようになります。
# Scopeメソッドの基本構文
`scope`メソッドの基本的な構文は以下のようになります。
“`ruby
scope :scope_name, -> { query }
“`– `scope_name`: スコープの名前を指定します。
– `query`: 実行するクエリを指定します。# Scopeメソッドの使用例
今回は、記事の一覧表示で人気の記事を取得する処理を例に見ていきます。
### scopeを使わないパターン
`scope`を使わずに人気の記事を取得する場合、以下のようにクエリを書くことになります。
“`ruby
# app/models/post.rb
class P
生まれたてのuserマイグレーションファイルをじっくり見てみた
ユーザー管理機能の実装時に用いられるdeviseライブラリ。
それによって生成できるuserモデルと勝手に爆誕するuserマイグレーションファイル。今回はモデル生成により勝手に下界に君臨してしまった**userマイグレーションファイル**について、暇なので観察することにする。
特に今回は、**生まれたての状態時**を見ていく。
# userマイグレーションファイル爆誕
`rails g model user`と手慣れたようにコマンドを打ち込むと、以下のとおりマイグレーションファイルが勝手にできる。(事前にdeviseのインストールはしておくんだお)“`
db/migrate/xxxxxxxxxx_devise_create_users.rb
“`記述は以下のとおり
“`ruby
# frozen_string_literal: trueclass DeviseCreateUsers < ActiveRecord::Migration[7.0] def change create_table :users do |t| ## Datab
gem install 時の permissions エラーの対応
いまさらながらGithub Pagesでプロフィールでも整備するかと思い立ち、おもむろにgem install したらpermissions error に遭遇しました。
“`
% gem install bundler jekyll
Fetching bundler-2.5.9.gem
ERROR: While executing gem … (Gem::FilePermissionError)
You don’t have write permissions for the /Library/Ruby/Gems/2.6.0 directory.
“`下の記事によるとどうやらシステムのrubyを利用していると、権限不足でgemのインストールができないというエラーのようです。
https://qiita.com/nishina555/items/63ebd4a508a09c481150
ということで、gem install bundler jekyll ができるところまで手順を残しておきます。
– 環境
macOS Ventura# 現状確認
“`
【Ruby環境構築】AlmaLinuxでRubyのバージョンを指定してインストールする
# 環境
– OS:AlmaLinux8.9
“`
# cat /etc/almalinux-release
AlmaLinux release 8.9 (Midnight Oncilla)
“`# Rubyのインストール
今回は`dnfモジュール`からインストールする方法と、`rbenv`を利用してインストールする方法の2つを紹介します。
## dnfモジュールからインストール
### インストール可能なRubyのバージョンを確認
`dnf module list <パッケージ名>`でdnfのモジュールリストからインストール可能なパッケージを探します。
今回の場合`ruby2.5`~`ruby3.1`が利用でき、デフォルトで`ruby2.5`がインストールされる設定なっています。
“`
# dnf module list ruby
AlmaLinux 8 – BaseOS 4.3 kB/s | 3.8 kB 00:00
AlmaLinux 8 – BaseOS
【Rails】form_withとかlocal: trueとかdata: { turbo: false }を理解してなかったので色々調べた
## 自己紹介
はじめまして、はる([@lemonade_37](https://twitter.com/lemonade_37))と申します。
駆け出しエンジニアとして約2ヶ月弱が経過しました🐣## 概要
仕事中、form_with関係の実装で詰まり、自分の理解が浅かったツケが来たのを感じたので、調べてみました😇
お恥ずかしながら、スクール時代はRails5、今はRails7を触っており、Railsのバージョンごとでの違いがごちゃ混ぜになっていたこと、フォームのオプションやそもそもAjaxなどきちんと理解できていなかったので調べたことをまとめます。:::note warn
間違っている箇所があるかもしれませんので、その際は是非教えて頂けると嬉しいです🙇
:::## フォームの非同期送信に関するオプション
### Rails5以前
フォーム送信時、デフォルトではページ全体がリロードされます。非同期処理をするにはオプションを明示的に設定します。
– `remote: true`
Rails5以前でフォームのオプションで使われていました。Ajaxを用いて非同期にします。
GroveBeginnerKit を、C++(Aruduino)とRuby(ラズパイ,Rboard) で使う I2C – 気圧センサー編
[しまねソフト研究開発センター](https://www.s-itoc.jp)(略称 ITOC)にいます、東です。
[Grove Beginner Kit for Arduino を使ってみる記事](https://qiita.com/HirohitoHigashi/items/dc43ea72d572b21a6823)の第5回、今回は I2C 接続の気圧センサーを題材にします。
このレポートでは、
「メーカーのデータシートを見て、センサICを直接コントロールをすること」
を、方針とします。
もちろん、プログラムを書く上で既存のライブラリ等の実装を参考にすることは良い事です。しかしながらこのレポートは、I2C バスやセンサ IC の扱い方、データシートの読み方を示す事も目的としているため、できるだけ低レイヤーでの説明を行います。ターゲットは、以下の通り。
* Arduino - 付属の Arduino Uno 互換機
* Ruby – Raspberry Pi + [Grove Base HAT for Raspberry Pi](htt
FormObjectを編集に対応させる
PF作成においてFormObjectを使用した際に、編集機能の実装に苦戦し時間を要したため覚え書きとして投稿させていただきます。
## form_withにおける登録、更新の切り替え
“`
form_with model: インスタンス変数 do |f|
“`
上記において“form_with“は渡されたインスタンス変数のメソッド“persisted?“の返り値によってリクエストをPOSTもしくはPATCHに切り替えています。
“persisted?“メソッドはレシーバーがDBに保存されている場合はtrue,保存されていない場合はfalseを返します。
urlオプションを渡さない場合、フォームの送信先urlは同様に渡されたインスタンス変数のメソッド“to_model“の返り値によって決定されます。## 使用例
今回、下記ER図におけるPurchaseモデルのレコードを保存するにあたり、ShopとBeanの選択をセレクトボックスにしてしまうとレコードの量次第では選択肢が膨大になりUIとして不適格だと判断したため、Stimulus-autocompleteとテキス
エラーが怖い?それならSyntax Errorを「起こす」ことから始めよう
# はじめに
こんにちは! @RyoSakon001 です。 @Fignn [Fignny株式会社](https://fignny.co.jp/)でPython, PHP, TypeScriptのエンジニアとして働いています。
エンジニアとして業務を始めたての頃は、エラーにとにかく悩まされがち。そんなあなたにピッタリの情報をお届けできればと思います。## こんな人に読んでほしい
– 駆け出しエンジニアの方
– 駆け出しWebデザイナーの方
– 育成担当ベテランエンジニアの方## エラーの大半って、実はコレ
一括りに「エラー」と言っても、色々な種類があります。超〜アバウトに、大別してみます。1. **Syntax Error**
1. **Undefined**
1. **その他**その中で、1, 2番がおよそ8割を占めていると思います。そして、実は本当に難しい(可能性がある)のは3番だけで、1, 2番は初心者の方でも簡単に解決できてしまうのです。
## エラーへの恐怖心をなくすには、自分で「わざと」起こしてみること
**「最初は怖いけど、やってみると大したことなかった