Ruby関連のことを調べてみた2020年03月14日

Ruby関連のことを調べてみた2020年03月14日

【Rails】 関連モデル先の条件で検索する方法(内部結合)

# 関連モデル先の条件で検索する方法
すでにたくさんの記事が出ていますが、自分がよく使うものを忘れないようにメモしました。

#

“`ruby
User.joins(:posts).includes(:posts).where(posts: { post_name: ‘test1’ })
“`

# 参考
* Rails における内部結合、外部結合まとめ
* https://qiita.com/yuyasat/items/c2ad37b5a24a58ee3d30

元記事を表示

お前らの感情でダウ平均株価は動いている

なんて大それたタイトルにしましたが、この記事の目的はTwitterからツイートを取得して市場参加者のセンチメントを測定して値動きと比較してみようというものです。
後半には初心者向けのCOTOHA APIのチュートリアルも記載しています。

# 相場とセンチメント
## 相場と参加者
ここ最近、コロナウイルスや原油相場暴落を受けて株価が大暴落だ〜なんてニュースをよく耳にしますよね。
ある記事では「2008年のリーマンショック級だ」なんて話も聞いたりします。
また、少し前にはビットコインを代表する仮想通貨も流行りましたね。
これらの相場の専門用語で「狼狽売り」という言葉があります。
>狼狽売りとは、何らかの材料(ニュース)や相場環境により、株価が急激に下落した際に心理的に混乱を生じてパニック状態に陥り、持ち株を慌てて処分(売却)してしまうことを言います。
株式投資は、多分に人間の心理に影響されることから、後から冷静に判断すれば何ら株式価値に影響を及ぼさないことであっても、市場の雰囲気にのまれてしまい、このまま保有すれば膨大な損失が生じるのではないかとパニックに陥り、一刻も早く処

元記事を表示

Rails アプリで S3 の権限制御を外さずに署名付きURLの署名を省いてファイルアクセスする方法を調べた

## はじめに

Rails アプリを用いて、S3 の権限制御を外さずに署名付きURLを省いてアクセスする方法について調べたので、その方法をまとめておきます。

## 背景

S3 バケット内のファイルに権限制御を入れ、そのファイルに対してアクセスするとき、署名付きURLを用いることがあると思います。こんなURLですね。(クレデンシャルはマスクしています)

`https://example.s3-ap-northeast-1.amazonaws.com/foo/bar/piyo.txt/?X-Amz-Expires=-0000000000&X-Amz-Date=0000000000000000&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AAAAAAAAAAAAAAAAAAAA/00000000/ap-northeast-1/s3/aws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=0000000000000000000000000000000000000000000000

元記事を表示

ancestryとjQueryで多階層型カテゴリの入力フォームを段階的に表示させてみた。

##何をしたか
ショッピングサイトの検索・購入ページなどでよく見かける
「多階層型カテゴリの入力フォームが順に表示される機能」を
ancestryとjQueryを使って実装してみました。
振り返りを兼ねて記事を書いていきます。

##下準備

長いので見たい人だけ展開してください

※コードは載せますがここでは特に説明しません。
※scssは必要ないのですが味気ないので入れました。

“`terminal.
$ rails _5.2.4_ new ancestry_sample –database=mysql –skip-test –skip-turbolinks –skip-bundle
$ gem install ancestry jquery-rails haml-rails
$ bundle install
$ rails g model category
$ rails g model item
$ rails g controller categories
$ rails g controller i

元記事を表示

『メッセージを投稿』できる最低限のRailsアプリを丁寧に作る(これで初心者完全卒業!)

# この記事の基本的な方針
メッセージを投稿して一覧表示するだけの簡単なアプリを作ります。
完成するのは以下のたった4画面のアプリです。

【TOP画面(ログイン前)】     【TOP画面(ログイン後)】
a0.png a4.png
【登録画面】
a1.png【rails】複数チェックボックス選択によるAND条件検索を実装してみた(サーバサイド)

# what
メモアプリで、メモに紐づくタグを複数選択することにより、AND条件で検索できるようにした。
# why
メモの数が膨大になっても探せないメモはない説浮上のため。

————————————————————–
#### 前提条件

・rails 5.2.4.1
・メモアプリで、メモに紐づくタグをチェックボックスで選択し、絞り込み検索を実装する。
・メモとタグのモデルは多対多。

————————————————————–

### ビュー(チェックボックス)

次の通り実装

【rails】チェックボックスを使ったAND条件による検索
 https://qiita.com/igat/items/dc35d42889580026bb4d

### サーバサイド

“`app/controllers/tags_controller.rb

def search
beg

元記事を表示

Kernel#forkのサンプルメモ

# メモ

> fork(2) システムコールを使ってプロセスの複製を作ります
> ブロックを指定して呼び出した場合には、生成した子プロセスでブロックを評価します。
https://docs.ruby-lang.org/ja/latest/method/Kernel/m/fork.html

“`ruby:fork.rb
i = 10
puts “object_id: #{i.object_id}” #=> 21

3.times do
fork do
puts “object_id: #{i.object_id}” #=> 21 (ObjectIDは親プロセスの時の値と変わらない)
i += 1
puts i # => 常に11(元々の親プロセスの10が引き継がれる)
end
end

Process.waitall # すべての子プロセス終了まで待つ
puts “end: #{i}” # => end: 10 (子プロセスのインクリメントは影響されない)
“`

“`ruby:実行結果
% ruby fork.rb
object_

元記事を表示

【Rails】 5分でApexChart.jsを導入する方法

# はじめに
Apexchart を Rails に導入してみたのですが、かなり使いやすいわりに日本語記事がなく浸透していないと感じたため普及活動として広めていけたらいいなと思います。

# ApexChart.js とは
グラフ描画のライブラリです。同じようなライブラリの1つにchart.jsなどがあります。

* https://apexcharts.com/javascript-chart-demos/

## コマンド

“`terminal
// Rails アプリケーション作成
$ rails _5.2.4_ new five_min_apexchart
$ cd five_min_apexchart

// scaffold で Event モデルを作成
$ rails g scaffold c

元記事を表示

【Ruby】ハッシュ(Hash)について

今回はRubyでよく使うHashについて書き残しておきます。

#ハッシュ(Hash)とは?
ハッシュは文字列やシンボル等をキーにしてオブジェクトに格納するコンテナのこと。
以下のように{シンボル:値}で定義して出力することができます。

“`ruby:hash.rb
address = {name: “鈴木”, furigana: “suzuki”, tel:”123456″}

p address[:name]

p address[:furigana]

p address[:tel]

p address
“`

実行結果

“`
“鈴木”
“suzuki”
“123456”
{:name=>”鈴木”, :furigana=>”suzuki”, :tel=>”123456″}
“`

#シンボルとは?
シンボル(Symnbol)とは文字列に似たオブジェクトで、Rubyがメソッドなどの名前を識別するためのラベルをオブジェクトにしたもの。シンボルには、先頭に「:」をつけて表現する。
ハッシュは文字列でも使えるが、シンボルを使った方が効率がいいらしい。

####シンボルと

元記事を表示

KINX … ロゴ作った話と BDD 用テスティングフレームワークの話

# ロゴを作ってみた

## はじめに

**「見た目は JavaScript、頭脳(中身)は Ruby、(安定感は AC/DC)」**でお送りするスクリプト言語 Kinx。改めて Ruby っぽさの定義って何だろう、と思案中。これだ、という意見があればぜひご教授ください。

* [スクリプト言語 KINX(https://github.com/Kray-G/kinx)](https://github.com/Kray-G/kinx)
* 宜しければ★をポチっと。

見た目がゴージャスになって嬉しいのでご報告。

## Kinx

オリジナルのロゴを作ってみました。Ruby のかっこいいロゴとか、Python や JS、Bootstrap みたいなのもみんなロゴがあるし、欲しいなーと。

* https://gith

元記事を表示

Ruby on rails で星を散らす

#はじめに
railsで、リロードする度に見え方が変わる星空を再現してみます
![star-sky.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481085/bef194a6-fe03-aad2-7337-fb5bff5f52ae.jpeg)

[作成したWebアプリ](http://fffbookmark.herokuapp.com/)にも採用しています。

#実行
最初に次のファイルを用意します。

“`haml:index.html.haml
.sky
.stars
“`

“`css:star_sky.css
.sky{
background-color: #014; //黒っぽければなんでもいい
}

“`

次に、星を表すオブジェクトを用意します。

“`haml:index.html.haml
.sky
.stars
.star
“`

“`css:star_sky.css
.sky{
background-color: #014; //黒っぽければなんでもいい
}

元記事を表示

本番環境でデータベースに情報を入力する方法。(seed.rb, SQL)

# はじめに

ローカル環境ではMYSQLに直接データベースの情報を入力していたのに
本番環境ではどのように入れたら良いかわからなーーーい!!
という方に必見です!!

※「Ruby on rails」を用いて作業しておりますので
そのことに関する情報のアウトプット記事となっております!!

## 1.モデルの作成

使用するアプリは
①moviesテーブル
②genresテーブル
③movie_genresテーブル(中間テーブル)
のデータを持っているとします。

それぞれのモデルとマイグレーションファイルを作成します。

“`ruby:ターミナル
rails g model movie title:string content:text –timestamps=false
# movieのモデルとマイグレーションファイルが生成される。
rails g model genre name:string –timestamps=false
# genreのモデルとマイグレーションファイルが生成される。
rails g model movie_genre movie_id:int

元記事を表示

Rubocopについて

Rubocopとはなんぞや。
まあ、端的に言えば「汚いコードを指摘してくれる」gem。ruby限定ですけど。
ポートフォリオを作っている時、ふわふわと「最後の仕上げに入れればいっか」なんてふざけたことを考えていました。完成した今だから言う。

**バカかお前は!!!!!**

普段わたしはコーディングする際、めちゃくちゃ綺麗に書くことを意識して書いています。もうほぼ完成って段になってRubocopを通すとあら不思議!クソコードが大量に発見されました!ボコボコにされて泣きながら書き直しましたよ、ええ。
とにかくRubocopは、コードを書いた都度調整するのに最適だと思っています。
やり方は以下。

“`Gemfile.
gem ‘rubocop’, require: false
“`
bundle installでインストールして完了。

“`
$rubocop
“`
これでrubyの規定に沿わないものが出てきます。
しかしこれだけではrailsアプリ内のファイル全てが対象になります。泣きます。
なので対象を絞ります。
アプリ直下(Gemfileなどと同じ場所)に
「.rubo

元記事を表示

[Ruby]メソッドについて

メソッド

メソッドとは、プログラミングにおける何らかの処理をする命令群のことをいう。
メソッド名をプログラム中に記述することで、そのメソッドの処理を実行できる。

各メソッドの処理は様々で、メソッドを用いることで、
欲しい値を求めたり実行したい処理を命令することができる。

元記事を表示

[Ruby]オブジェクトについて

■オブジェクト |

Rubyで扱える全てのデータは、「オブジェクト」と呼ばれる。
オブジェクトは 「物」 という意味で、現実世界の物をコードでも同様に捉えるようにするためのデータになる。

現実世界の”数、文字、色、時間”など、Rubyで扱う場合にはオブジェクトという形でデータ化されて、それぞれの持つ特性や動作を扱うことが可能となる。

Rubyには、よく使われるオブジェクトがはじめから用意されている。
以下。Rubyの代表的なオブジェクト。これら以外にもたくさんのオブジェクトがある。
・オブジェクト名 ” 扱うもの ”
・文字列オブジェクト ” 文字 ”
・数値オブジェクト ” 数 ”
・日付オブジェクト ” 日付 ”
・配列オブジェクト ” 複数のデータ ”
・時刻オブジェクト ” 時間 ”

元記事を表示

【Ruby】変数とは?

変数とは?
変数は、他のプログラミング言語ではデータを入れる
“数値や文字を収納する箱のようなもの”と
表現されることが多い。

でもRubyの変数で「箱のようなもの」と覚えてしまうと、バグを生み出してしまう危険性がある。

元記事を表示

【自分用】ピカソの洗礼名を覚える為のタイムアタックプログラムと、作って学んだことをメモ

### コード
“`Ruby:picass.rb
require ‘date’

class Array
def average
self.inject(:+) / self.length
end
end

christian_name = “パブロ・ディエゴ・ホセ・フランシスコ・デ・パウラ・ファン・ネポムセーノ・マリア・デ・ロス・レメディオス・クリスピン・クリスピアーノ・デ・ラ・サンティシマ・トリニダード・ルイス・イ・ピカソ”

num = 1
results = []
while num <= 10 do puts "#{num}回目:ピカソのフルネームを入力してください" started_at = Time.now christian_name_input = gets while christian_name_input.chomp != christian_name do puts "#{num}回目:間違ってます!きちんとピカソのフルネームを入力してください!" christian_name_input = gets end

元記事を表示

N+1問題とは?

#はじめに

よく耳にするけど「N+1問題」っていったい何??
どうすれば対処できるの??
となったのでまとめてメモ。

#N+1問題って?

N+1問題とは、SQLが必要以上に発行されてしまい、パフォーマンスが低下してしまう問題のこと。
??????

##つまりどういうこと??

例えば、
UserモデルとMicropostモデルがあり、
Userが複数のMicropostを持っているとします。

“`app/models/user.rb
class User
has_many :microposts
end
“`
“`app/models/micropost.rb
class Post
belongs_to :user
end
“`
そしてMicropost一覧ページでuserを表示するとします。

“`app/controllers/micropost_controller.rb
class MicropostsController < ApplicationController def index @microposts = Micropost.al

元記事を表示

Ruby on Railsで環境変数を設定する方法

## はじめに
railsで環境変数を導入する方法をまとめました。
環境変数はAWSのAccessKeyなどの機密情報をGithubに上げずにアプリで使用する際に必要になります。
Githubに機密情報をpushすると、悪用される危険性があるので、環境変数を使いこなし、AccessKeyなどの機密情報を適切に管理できるようになりましょう。

### 1 gemをインストールする。
“`php:Gemfile
gem ‘dotenv-rails’
“`

### 2 .envファイルを作成
環境変数を設定したいアプリケーションのGemfileなどが置いてあるルートディレクトリに .env ファイルを作成します。

“`php:|.env|
AWS_ACCESS_KEY=’***********’
API_KEY=’*********’
DATABASE_PASSWORD=’**********’
“`

### 3 .gitigonreに.envを追加
.gitignoreファイルの中に.envファイルを記述しないと、Githubにpushしたときに、.envファイルも

元記事を表示

Rubyによるデザインパターン(1)

# Rubyによるデザインパターン(1)
 本記事は初級エンジニアがRubyを使用したデザインパターンをアウトプットしたものになります。また、デザインパターンは種類が多いため、何回かに分けて掲載していきたいと思います。今回はIteratorパターンとAdapterパターンをご紹介します。なお、こちら記事は次のサイトを参考にしております。
[TECHSCORE](https://www.techscore.com/)
[酒と涙とRubyとRailsと](https://morizyun.github.io/)

## Iteratorパターン
 Iteratorパターンは要素(オブジェクト)の集まりを保有するオブジェクトの各要素(オブジェクト)に順番にアクセスする方法を提供するデザインパターンです。各オブジェクトの名前、または各オブジェクトのパラメータを利用するなど、各オブジェクトへのアクセス方法は異なります。つまり走査方法(アクセス方法)を与えるクラスを別に用意することで、より柔軟な設計をする事ができるようになります。
 イテレータには内部イテレータと外部イテレータがありますが、内部イ

元記事を表示

OTHERカテゴリの最新記事