おぴよの気まぐれ日記

おぴよの気まぐれ日記

岡山やプログラミング、ファッションのこと、子育てや人生、生き方についての備忘録。

Gemfile通りにherokuが'bundle install'してくれない!

何が起こってるのか herokuではどうやら、 sqlite3は使えないそうなので本番とローカル環境でDBを切り分けるようGemfileを更新しました。 # Gemfile source 'https://rubygems.org' gem 'rails', '~> 5.0.0', '>= 5.0.0.1' gem 'pg' gem 'puma', '~> 3.0' ge…

Googleフォームで先着順=回答数を制限する!を10分で実現する

Googleフォームのアドオン「formLimiter」の画像 アンケートを行いたい時に便利なのが「Googleフォーム」。 簡単にアンケート機能が実現できるし、集計も簡単にできるので大変便利なのですが 先着10名様限定! みたいな回答数に上限を持たせるような機能を実…

TwitterやFacebookなどのSNSボタンを5分で追加する

Railsアプリを作る時、SNSのシェアボタンを設置するにはどうすれば良いのでしょうか? Rails social-share-button gemのイメージ画像 今回たまたまsocial-share-buttonというgemを見つけたので、それを使ってみました。 https://github.com/huacnlee/social-…

css上で動的に値の変更はできないけどhtmlに書けばできる

cssに設定する値を動的に変更するとかできないのか?なんて思ったことないでしょうか? 例えば、 ユーザー毎にボタンの色や背景色などを変更したい! 条件に応じてbackgroundに画像を入れたり、差し替えたりしたい! 結論から言うとできます! ただcssでは出…

ActiveJobを使った非同期処理の方法

Ruby on Railsを使って非同期で処理する方法 ActiveJobについてです。 ざっくり手順 generateでjobファイルを作成する jobをキューに登録する jobを実行する generateでjobファイルを作成する コマンドで $ bundle exec rails g job hoge_job 手作業で jobs/…

Ruby on Railsでcsvダウンロード機能の作り方

Ruby on Railsを使ってcsvファイルのダウンロード機能を作りたくて調べました。 大枠の手順 routesを設定 csvを受け付けるアクションをコントローラーに設定 対象データを抽出しcsvフォーマットのファイルへ渡す CSVデータを作成する 画面にダウンロードボタ…

【Rails】Strong Parametersで`param is missing...`エラーになる

こんちには。opiyoです。 ActionController::ParameterMissing in ImagesController#create param is missing or the value is empty: image def image_paprams params.require(:image).permit(:name, :picture) end end こんな感じでエラーになるのだが、pa…

Docker For MacでPostgreSQL9.5系の環境を作ってみた!

こんばんは。opiyoです。 brewでインストールするとなんだかPostgreSQL9.6系がインストールされてしまうのだけど、本番環境と同じバージョンをローカルに使いたくてウズウズしていたのだが... Docker使えば良いじゃんってアドバイス貰ったので教えてもらった…

【Rails】ファイルのフルパス、ファイル名を取得する

過去データとかでファイルを一括で読み込みたい場合で使える技です。 > files = Dir.glob("/Users/taku/rails/gist/test/*.xls") => ["/Users/taku/rails/gist/test/1.xls", "/Users/taku/rails/gist/test/2.xls", "/Users/taku/rails/gist/test/3.xls", "/U…

【Ruby】配列の中身が重複しているかをチェックする方法(select、find)

csvのデータを取り込み別のcsvへ吐き出す処理をしていたのですが、値が重複していることに気がつきました。 こんな感じ。 data = [] inport = CSV.read("./inport.csv") inport.each do |c| data << c end CSV.open("./export.csv", "w") do |export| data.e…

【bootstrap3】ナビゲーションバー(Navbar)で起きたレイアウト崩れと右寄せへの対応方法

こんばんは。opiyoです。 結論としては勝手な解釈をして余計なことしてた!に尽きるのだけど、同じようなハマり方すると時間もったい無いので共有です。 <header> <nav class="navbar navbar-inverse"> <div class="container-fluid"> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbarEexample1"> </button></div></div></nav></header>

【Rails】XX件以上登録できないようにする独自バリデーションメソッドを設定する方法

こんばんは。opiyoです。 Railsアプリで「XX以上は登録できない!」というバリデーションを設定したかったので、やり方を調べてみました。 やりたいこと Keywordというテーブルにデータを登録する処理で、5つまでしか登録できないようにバリデーションを設定…

【Bootstrap】navbarの背景色、文字色の悩みはこれ一発で解決だわー

何か作る時bootstrapにお世話になることあると思うのですが、cssいじっただけだと何故か上手くいかない。 例えば今回のnavbarですね。 ナビゲーションメニューがかっこよく決まらないとモチベーションが全く上がらないので、いろいろ探していたらあったわー…

【Rails】ファイルをデータベースに保存する方法

ファイルを保存する方法はRailsチュートリアルとかでは、CarrierWaveというgemを使う。 だがちょっとしたアプリとか作りたい時には、DBに保存した方が都合がいい時もあるはず。 gemを使う方法は別の機会でまとめるとして、今日はDBに保存する方法を。 モデル…

【Ruby on Rails】月の最初の日、最終日はどうやって取得する?

画面から入力された日付の月が何日までなのか取得する方法が分からなかったので調べてみました。 月の最終日 irb> Date NameError: uninitialized constant Date Did you mean? Data from (irb):9 from /Users/taku/.rbenv/versions/2.3.3/bin/irb:11:in `<main>' </main>…

【Rails】created_atとupdated_atへデータを登録する方法

過去データの取り込みで直接DBにデータを入れる際にcreated_atとupdated_atにはどうやって値をセットすれば良いのか分からなかったから調べてみた。 結論としてはTimeWithZoneクラスが使われているからTime.zone.nowすれば良いっぽい。 > Shop.first.created…

【Rails環境構築】bundle installでエラーになる時の対処法!

こんにちは。opiyoです。 昨日まで普通に動いていたのに 教科書、本と通りに設定しているはずなのに 何もしてないのに動かないぞー って経験無いでしょうか? 僕も昨日新しくMacが手に入ったのでRails環境をローカルに構築して今作っているRailsアプリを動か…

初心者でも30分で出来た!MacにRails開発環境を作ってみた

こんばんは。opiyoです。 プログラマの勉強をしていて最初につまずくポイントは環境構築じゃないでしょうか? 今はCloud9とかWeb上で勉強できるサイトなどが当たり前になってきているので、作るきっかけは無いかもしれないですがエンジニアとして働いていく…

【Ruby on Rails】スクレイピングで簡単にmeta情報を取得するgem metainspector

こんばんわ。エンジニアに夢を描くopiyoです。 最近はずっとスクレイピングについて触れることが多いのですが、こんな経験ないですか? ブログ書く時とかurl貼り付けるだけで引用文が作成されるけど、あれどうやってんだ? まさにこういう奴↓↓ opiyotan.hate…

【Rails】NokogiriじゃなくてMechanize gemで簡単スクレイピング!

先日Nokogiriを使ったWebスクレイピング方法を紹介しましたが、もっと簡単に出来るgemを見つけたのでご紹介。 opiyotan.hatenablog.com その名はMechanize 利用する準備 gemのインストール gem 'mechanize' $ bundle install スクレイピング先のサイト情報を…

【Ruby】Nokogiriを使って「はてなブログ」をスクレイピングする!

こんばんは。エンジニアになれるか不安なopiyoです。 今日はWebサイトの情報を取得することが出来る、Webスクレイピングという技術をRubyでやってみます! Webスクレイピングとは Webサイトの情報を取得する技術ってイメージですが、wikipediaでちゃんと調べ…

【Ruby on Rails】決まった時間に自動で処理してくれる`whenever`の使い方!

こんばんは。早くエンジニアになりたいopiyoです。 以前rssを取得する方法について、まとめて見たのですが今日はそれの発展させたいと思います。 opiyotan.hatenablog.com 時代は変わる。そして情報も常に変わる。 だから、rss情報も常に最新の情報を自動で…

【Bootstrap】ナビゲーションメニューをセンタリングして均等化する方法!

こんばんは。opiyoです。 よくあるナビゲーションメニューですが、センタリングされてないとダサいですよね。 bootstrapのnavのサンプルを、そのままコピペして試してみたのですが センタリングされない 文字数に応じた領域になってしまいかっちょ悪い って…

【Ruby on Rails】Rakeタスクを使えば様々な処理が自動化出来る?(初心者向け)

今日は様々な場面で活躍するrakeタスクの作り方と実行方法をまとめてみます。 Rakeとは そもそもRakeですが、Rubyで書かれたコードをタスクとして作成しておき必要に応じて呼び出し実行する事が出来る機能です。 rakeタスクを利用する場面としては、こんなの…

【Ruby】rssを取得して簡単にまとめサイトが作っちゃおう!

こんばんは。早くエンジニアになりたいopiyoです。 最近は会社で全くコードを書くことが出来ず、焦りまくっていう日々を歩んでいるのですが自分で少しでもコードを書く時間を作ろうと思ってRailsアプリを作っています。 その中でトレンド情報を取得して表示…

【PostgreSQL】Dockerで作ったDBにcsvファイルを参照したcopyコマンドを実行するには?(\copy)

コンテナチェック $ docker ps コンテナログイン $ docker exec -it NAME /bin/bash コンテナへファイルをコピー $ docker cp ~/hoge.csv NAME:/tmp/ PostgreSQLにログイン $ psql hoge -p5432 copyコマンドのファイルパスをコンテナ側に合わせ実行 COPY sho…

【PostgreSQL】テーブルをコピーしたらindexや制約がコピーされないぞ?

過去データの取り込み作業でテーブルにデータを流し込む作業をしているのだけど、念のためのバックアップを作って何かあれば戻せるように準備していたのだが、indexや制約がコピーされてないことに気づき調査開始。 単純にコピー作って戻す方法(ダメな方法…

【Ruby on Rails】ActiveRecordを使ってランダムなデータを指定した数だけ取得する方法

データの更新作業などで更新結果を確認したい場合に、対象データが多い場合は、全部のデータ見るのは大変なので何件かデータを取得してチェックするなんて場面があるかなと思います。 そんな時にランダムなデータを取得して結果の確認が出来れば便利ですよね…

【Heroku】DBを1から作り直したい時にやること(rails db:reset)

ローカルだと一発で出来るdb:resetがherokuだとできないだと $ rails db:reset $ rails db:seed $ heroku run rails db:reset rails aborted! ActiveRecord::ProtectedEnvironmentError: You are attempting to run a destructive action against your 'prod…

【Ruby】文字列をDate(日付)に変換する時は桁数を意識しないと違う日付になる

文字列が意図しない日付になる? 売上などのデータでcsvファイルを連携して取り込むってのはよくある話だと思うのですが、単純に文字列結合して変換すると違った日付になったりエラーになったりするので気をつける必要がある。 > require 'date' => true >Da…