- 1. 素人が誰かが欲しくなりそうなWebツール作ってみたい
- 2. Couldn’t find Item with ‘id’= を解決する
- 3. 【Rails】操作性のよいWebフォームを自動生成できるCMSを開発してみた
- 4. Ruby: bundle exec rake db:create でエラーが出た時に対処した方法 -未来の自分に向けて
- 5. CI/CD環境も含めたRails6の開発環境が今すぐに欲しい……
- 6. 素人がWebサービスを作る備忘録(実装編)4
- 7. Content-Type: application/jsonでPOSTする
- 8. Ruby バージョン変更方法
- 9. RuboCopの”The following cops were added to RuboCop, but are not configured.”の対処方法
- 10. 商品出品画面を作る④RSpec(テスト)
- 11. クラスの定義
- 12. Rubyで線形探索と二分探索を出力する
- 13. Rubyでフィボナッチ数列を出力する
- 14. 自己代入演算子
- 15. Octokitを使って組織配下のリポジトリリストを取得する
- 16. [Ruby]シーザー暗号を出力するコード
- 17. YouTube Data API (v3) による YouTube 動画のコメント取得(Ruby版)
- 18. ネットワークの基礎について
- 19. MY SQLでrails db:migrateが反映されない時
- 20. ActiveRecord::RecordNotFound in BooksController#edit
素人が誰かが欲しくなりそうなWebツール作ってみたい
# 素人が誰かが欲しくなりそうなツールを作ってみたい
### 今考えているもの
社内向けツールの作成# 開発言語 フレームワーク
Ruby 2.6系
Rails 6系# 参加するにあたって
1. いまからRailsの勉強がしたいんだー ← どんどん参加しちゃってください
2. なに作ればいいかわかんない ← Issueみてアイデアみつけて実装してきましょ?
3. 初心者です実務経験ないし… ← 関係ないです、勉強しながら作っていきましょ?
4. 随時更新します# ルール
1. 自分が何か作るときは、Masterブランチじゃなくて自分専用のブランチを作ってくださね
2. どんな機能を付けるかIssueを上げましょう
3. 他人が嫌がるような行動は避けましょう
4. 同じ機能を作らない
5. ほかの人のコードや機能を触る場合は、その人に連絡を!
6. 随時更新します# GitHubページ
https://github.com/NobitakunProj/JupiterManger# Slack参加用
https://join.slack.com/t/nobitak
Couldn’t find Item with ‘id’= を解決する
#エラー内容
フリマアプリ作成において、購入機能を実装中に起こったエラー
購入までの流れは、
1.商品一覧ページ
2.商品詳細ページ
— ここでエラー —-
3.購入確認ページ
4.(購入完了)
`Couldn’t find Item with ‘id’= `なので、「itemモデルのidが見つからない」とういエラーなます
#エラー原因
##コントローラー
まずエラーが出ているitmescontrollerについて
今回購入確認ページへのアクションは`purchase`、購入のアクションは`buy`とし、`itmescontroller`に記述しています。`purchase`,`buy`アクションについてもitemのidを見つけるように`
【Rails】操作性のよいWebフォームを自動生成できるCMSを開発してみた
静岡でWeb開発をしているkazuomatzです。
最近は、Railsについてはオワコンであるという風潮になってきていますね。ちょっと肩身が狭いです。
それでもRailsの哲学である、DRY(Don’t repeat yourself:同じ繰り返しをしない) / Convention over Configuration(設定より規約)に魅了されて、Railsで10年ほどWeb開発をしてきました。
そんな中、ふと、これまでいろいろなWebアプリケーションを作ってきた中でDRYをどこまで守ってきたんだろうという思いにかられ、RailsでDRYの哲学に沿ったCMSを作ってみようと思いたったのが2年前、やっとひとつの形になったので公開してみることにしました。
ソースは、[GitHub](https://github.com/kazuomatz/lifecode_cms)で公開しています。
すでにいくかつのプロジェクトで利用していますが、汎用的な利用での配慮がまだ足りていないかもしれませんが、興味のある方は、以下に開発手順も記してありますので、一度、試してみていただけたらと思います。
Ruby: bundle exec rake db:create でエラーが出た時に対処した方法 -未来の自分に向けて
[version内容]
ProductName: Mac OS X
ProductVersion: 10.15.2
BuildVersion: 19C57
mysql Ver 8.0.19 for osx10.15 on x86_64 (Homebrew)
Rails version: 6.0.2.1
Ruby version: ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin19]まず、rails appの作成
“`
rails new sample -d mysql
“`
すると、すかさずエラーが!!“`
An error occurred while installing mysql2 (0.5.3), and Bundler cannot
continue.
Make sure that `gem install mysql2 -v ‘0.5.3’ –source ‘https://rubygems.org/’`
succeeds before bundling.
In Gemfile:
CI/CD環境も含めたRails6の開発環境が今すぐに欲しい……
CI(継続的インテグレーション)/CD(継続的デリバリー)環境も含めて今すぐにRails6の開発環境が欲しいんだ……しかも無料で……
いろいろと設定するのめんどくさいな……あぁー後なんとなくDockerで開発したいよね……そんな要望を叶えるために作成したのがこの記事になります!
CI(継続的インテグレーション)/CD(継続的デリバリー)環境なしだったらコマンド3つでRails6の開発環境を立ち上げることができます!
またCircleCIとHerokuを使用してCI(継続的インテグレーション)/CD(継続的デリバリー)環境も構築できるように説明しています詳しくは[template_sample_rails_6](https://github.com/dodonki1223/template_sample_rails_6)のリポジトリを見てください!
# 改修箇所
– Docker化
– Redis、Sidekiqの導入
– DBをPostgreSQLに変更
– RSepcの導入
– factory_botの導入(テストデータ作成ツール)
– Simpl
素人がWebサービスを作る備忘録(実装編)4
#はじめに
この記事は初心者が初めてWebサービスを開発するにあたっての備忘録的な記事です。そのため間違いなどがあると思いますが、ご了承ください。
進め方としては基本的にはまずrails tutorialにのっとって進めますその後いろいろ自分で変えていくというような感じで進めます。#サイトナビゲーション
application.html.erbでサイトないを移動する際の起点となる部分を作成していく。
今回はtutorialにしたがってBootstrapを使用していきます。“`ruby:application.html.erb
“`まずはじめに重要なコードはこれです。上記のコードは旧式のIEをサポートの対象とするためのコードです。
“`ruby:application.html.erb
Content-Type: application/jsonでPOSTする
### はじめに
JSON形式でPOSTをしたときに、どのようにパラメータが送られるのかをまとめます。### POST
usersコントローラーへパラメーターを送ります。
“`zsh
$ curl -X POST -H “Content-Type: application/json” -d ‘{“name”: “hoge”, “email”: “mail@example.com”}’ http://localhost:3000/users
“`すると、パラメーターは次のようになります。
“`
Parameters: {“name”=>”hoge”, “email”=>”mail@example.com”, “user”=>{“name”=>”hoge”, “email”=>”mail@example.com”}}
“`これ、送ったパラメーターをコントローラー名で勝手にネストしてくれているそうです。
そうすることで、railsでは`params[:user][:name]`という形でパラメーターを使うことができていたんですね!userでネストされて
Ruby バージョン変更方法
# すでにバージョンをインストールしている場合
“`
& rbenv versions
system
* 2.6.3 (set by /Users/maruuchisoma/.rbenv/version)
2.6.5“`
## ruby 2.6.5に切り替えたい
“`
$ rbenv global 2.6.5
“`#Rubyのバージョン確認
“`
$ ruby-v
ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-darwin18]
“`成功!
RuboCopの”The following cops were added to RuboCop, but are not configured.”の対処方法
先日RuboCopを最新バージョンにしたところ、これまでと違うメッセージが表示されました。
この記事ではメッセージの意味と対処方法の解説を行います。“`bash
$ bundle list | grep rubocop
* rubocop (0.81.0)$ bundle exec rubocop
The following cops were added to RuboCop, but are not configured. Please set Enabled to either `true` or `false` in your `.rubocop.yml` file:
– Lint/RaiseException (0.81)
– Lint/StructNewOverride (0.81)
– Style/HashEachMethods (0.80)
– Style/HashTransformKeys (0.80)
– Style/HashTransformValues (0.80)
For more information: https://docs.r
商品出品画面を作る④RSpec(テスト)
#RSpecを使用し、バリデーションのテストとコントローラーのテストを行う
[商品出品画面を作る①へ](https://qiita.com/m-kawakami/items/8617ac3d9b3528ad0326)
## モデル
“`ruby:item.rb
validate :images_presence
validates :name, :text, :category_id, :condition_id, :deliverycost_id, :pref_id, :delivery_days_id, :boughtflg_id,:user_id, presence: true
validates :price, presence: true, numericality: { greater_than_or_equal_to: 300, less_than_or_equal_to: 9999999 }has_many_attached :images
belongs_to :user
belongs_to :categorydef ima
クラスの定義
####オブジェクト
クラスは設計図、オブジェクトは実体を指す。
オブジェクトとインスタンスはほぼニュアンスだという認識でOK
クラスに基づいてオブジェクトを生成していくという認識。“`ruby:ruby
class User #クラスの作成
def initialize(name, age)
puts ‘#{name}さん、#{age}歳’
end
endUser.new(‘Bob’, 20) #オブジェクトの作成
#=> Bobさん、20歳
“`###インスタンス変数
・インスタンス変数の変数名は必ず@で始める。
例: @name = name・インスタンス変数を参照できるのは、initializeメソッドとオブジェクトのインスタンスメソッドのみ。
・クラス内部ではインスタンス変数を使用可能。クラス外部から参照したい場合は参照用のメソッドを作成。
“`ruby:ruby
class User
def initialize(name)
@name = name
enddef name #オブジェ
Rubyで線形探索と二分探索を出力する
こんにちは、Ruby歴半年のプログラマです。
基本的なアルゴリズムを習得したいと考えて、『Pythonではじめるアルゴリズム入門 伝統的なアルゴリズムで学ぶ定石と計算量』を読んでいます。
本記事は『Pythonではじめるアルゴリズム入門』のPythonの**線形探索**と**二分探索**のサンプルコードをRubyで実装しました。
より良いコードの書き方などありましたら教えてもらえると嬉しいです。
## 環境
“`bash
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.15.4
BuildVersion: 19E287
$ ruby -v
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-darwin19]
“`## Rubyで線形探索
“`ruby
def binary_search(data, input_number)
data.each_with_index do |number, index|
return index i
Rubyでフィボナッチ数列を出力する
こんにちは、Ruby歴半年のプログラマです。
基本的なアルゴリズムを習得したいと考えて、『Pythonではじめるアルゴリズム入門 伝統的なアルゴリズムで学ぶ定石と計算量』を読んでいます。
本記事は『Pythonではじめるアルゴリズム入門』のPythonの**フィボナッチ数列**のサンプルコードをRubyで実装しました。
より良いコードの書き方などありましたら教えてもらえると嬉しいです。
## 環境
“`bash
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.15.4
BuildVersion: 19E287
$ ruby -v
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-darwin19]
“`## Rubyで再帰を使ったフィボナッチ数列
“`ruby
def fibonacci(input)
memo = { 1=> 1, 2=> 1 }
return memo[input] if memo.has_key?(input)
自己代入演算子
##自己代入演算子
その名の通り自分自身に代入するということです。自己代入演算子は、通常の演算子を用いた書き方に直すことができます。⬇︎通常の代入演算子
“`sample.rb
number = number + 1
“`この式を自己代入演算子+=を使い書き直します。**上下の記述は同じ意味になります。**
⬇︎自己代入演算子
“`sample.rb
number = number += 1
“`
自己代入演算子を使った式 number += 1 は 変数numberに1を足した値をnumberに代入するという処理になります。他にも代表的な自己代入演算子は以下のようなものがあります。
|自己代入演算子 |例 | 処理 |
|:-:|:-:|:-:|
|+=| number += 1 |numberに1足した値を number自身に代入|
|-=| number -= 3 |numberから3引いた値を number自身に代入|
|*=| number *= 5 |numberに5かけた値を number自身に代入|
|/=| number
Octokitを使って組織配下のリポジトリリストを取得する
Octokitのruby版を使ってあるOrganization配下のリポジトリリストを作ってみました。CSVで書き出してます。
コードはprivateとpublicだけ絞って出してます(forkは除きたかった)。access_tokenは[ここ](https://github.com/settings/tokens)で発行可能です。
“`rb
# *****はGithubで発行したアクセストークン
client = Octokit::Client.new(:access_token => “*****”)privates = client.organization_repositories(‘組織名’, {:type => ‘private’})
publics = client.organization_repositories(‘組織名’, {:type => ‘public’})
repos = privates.concat(publics)csv_text = CSV.generate do |csv|
repos.each do |repo|
cs
[Ruby]シーザー暗号を出力するコード
# 対象読者
プログラミング初学者# シーザー暗号とは
シーザー暗号(Caesar cipher)は単一換字式暗号の一種で、平文の各文字を、辞書順に3文字分シフトして暗号文を作る暗号である。古代ローマの軍事的指導者ガイウス・ユリウス・カエサル(英語読みでシーザー)が使用したことから、この名称がついた。
# 例題
「khoorzruog」という文字列があり、これを3文字ずらす(戻す)と復号できることがわかっている。
それを実現させるコードを記述する。## 事前知識
### splitメソッド
文字列を分割して配列にするためのメソッド。
型は以下の通り。“`ruby
文字列.split(“”)
“`
例えば“`ruby
str = “abc”array = str.split(“”)
p array # 出力結果 [“a”, “b”, “c”]
“`### joinメソッド
配列の中の要素を文字列にしてそのまま連結させるメソッド。
型は以下の通り。“`ruby
配列.join
“`
引数を取ることも出来ますが今回は割愛。### ordメ
YouTube Data API (v3) による YouTube 動画のコメント取得(Ruby版)
# はじめに
[YouTube Data API v3](https://developers.google.com/youtube/v3) を使用してYouTube動画のコメントを取得します。使用言語は`Ruby`で、Ruby 用 Google API ライブラリ([google-api-ruby-client](https://github.com/googleapis/google-api-ruby-client))のバージョンは`0.37.3`です。
# 事前準備
– API キー
– Ruby 用 Google API ライブラリ## APIキー取得
下記参照下さい。
[Youtube Data APIを使用して、Youtube Liveのコメントを取得する – Apiキーの有効化](https://qiita.com/MCK9595/items/fdbd543ff938febcd136#api%E3%82%AD%E3%83%BC%E3%81%AE%E6%9C%89%E5%8A%B9%E5%8C%96)## Ruby用Google APIライブラリインストー
ネットワークの基礎について
#WEBの仕組み
PCはこのように繋がっている。アプリケーション層から指示を受けて別の場所のPCのアプリケーションに連絡する。###物理的ネットワーク
物理的なケーブルやネットワークアダプタなど###IPアドレス
IPアドレスにはグローバルIPとプライベートIPが存在する。グローバルIPは被ってはいけなく、DHCPによってルーターに相対的に割り当てられる。ルーターはプライベートIP(ネットワーク部とホスト部で構成されている)を、複数(ネットワーク部は同じで、ホスト部の部分が違うだけ)持っている。そのプライベートIPは近くのデバイスに割り当てられる。参考文献は[ネットワーク部とホスト部](https://www.geolocation.co.jp/learn/ip/02.ht
MY SQLでrails db:migrateが反映されない時
## MY SQLでrails db:migrateが反映されない時
スクールでのチーム開発中にブランチ切ってマイグレーションファイルを編集したが、SQL上に変更内容が反映されないという事態が発生。
## rails db:migrateしても。。
DB上にカラムがないので“`:ターミナル
$ rails s
“`
でサーバー立ち上げてもエラーが出てしまう。## 最終的な解決方法
チーム開発であまりおすすめできない強引なやり方ですが
“`:ターミナル
$ ./bin/rails db:migrate:reset
“`これで一旦DBの情報をリセットして再び
“`:ターミナル
$ rails db:migrate
“`するとマイグレーションファイルからの情報が読み込まれて正常にカラムが認識されました。
結局このあと本番環境にデプロイする際にエラーが出てしまったのでこれから解決していきます。頑張ろう。。。
ActiveRecord::RecordNotFound in BooksController#edit
##ActiveRecord::RecordNotFound in BooksController#edit
Ruby on Rails超初心者です。
Ruby on Railsでログイン機能付きの本の感想を登録できるアプリケーションを作成しています。
ログインしているユーザー以外のユーザー(他人のユーザー)が投稿した本の内容に編集と削除ができないようにアクセス制限をかける実装をしていましたが、その途中でこのようなエラーが出ました。
エラー内容を見ていくと、以下の記述がありました。
Couldn’t find User with ‘id’=15
どうやら、userモデルのidに15はないよーというエラーみたいです。
このidは、本来はBookモデルのidであるはずだな~と思いながらコントローラーの該当のソースコードを見てみると、、“` app/controllers/books_controller.rb
before_action :correct_user, only: [:edit, :update, :destroy]#(省略)
private
de