Subscribed unsubscribe Subscribe Subscribe

Getting started with Mastodon ヘ(^o^)ノ

Today, I attended this event. dddrb.doorkeeper.jp But I failed to setup Mastodon. The reason for the failure was a bug in cld3-ruby. Fortunately this bug was fixed. github.com github.com Setup for macOS $ gem install foreman $ brew install…

Kunibiki.rb #3に参加したヘ(^o^)ノ

kunibikirb.connpass.com 発表内容 Railsアプリ開発者のためのDocker入門 by セラリンさん slides.com rails + reactでアプリ作成 by 吉岡さん React, Vue.jsなどフロント回りのお話でしたー 参考資料 qiita.com めんどくさがりの僕はフロントエンドとバック…

Tmuxを使ってプロジェクトの開発環境をいっぱつで起動するヘ(^o^)ノ

一つのプロジェクトで複数のタブを開いて作業したりしませんか? Rubyのアプリケーションであれば foreman を使ったりするかもしれませんが、、 Shinosaka.rbで今回のテーマにぴったりなプロジェクトがあるのでそいつを使って試してみます。 github.com まず…

Destructuring Object in ES6

often use const props = { label: 'label', text: 'text' } const { label, text } = props console.log(label) #=> 'label' console.log(text) #=> 'text' default value const props = { label: 'label' } const { label, text = 'text' } = props consol…

Jestでcontextを使うヘ(^o^)ノ

Environment Jest 18.1.0 Jestでは context が使えません、、 github.com なので、使えるようにしてみましょう。 とはいっても、contextはdescribeのエイリアスです。 global変数を定義してみましょうヘ(^o^)ノ // setupTestFramework.js global.context = d…

Rails5でActiveSupport::PerThreadRegistryがdeprecatedになったよヘ(^o^)ノ

ちょっと今更ですが、Rails5でActiveSupport::PerThreadRegistryがdeprecatedになった。 ActiveSupport::PerThreadRegistryを使ったほうがイイ理由は遠い昔に書いたブログを参照してね。 murajun1978.hatenadiary.com ActiveSupport::PerThreadRegistryにも…

フロント用にサクッとAPIのレスポンスを用意するヘ(^o^)ノ

Mock API response with json-server github.com Create sample data with Faker.js github.com Sample code github.com Setup $ git clone git@github.com:murajun1978/faker-sample.git $ cd faker-sample $ npm install Start server $ npm start faker.j…

n でNode.jsのバージョンを管理する ヘ(^o^)ノ

github.com Installation $ git clone git@github.com:tj/n.git $ cd n && make install Usage Installed versions $ n Install latest version $ n latest Install/Activating versions $ n 6.3.0 Available list $ n ls Remove version $ n rm 6.3.0 io.js…

GitbookをGitHub Pagesで公開する ヘ(^o^)ノ

Gitbook markdownで書ける電子書籍作成ツール HTMLや電子書籍(PDF,EPUB,MOBI)にoutputできる 今回はHTMLをoutputして、GitHub Pagesのホスティング機能を使って公開してみます github.com GitHub Pages GitHubのホスティングサービス Organization と Pr…

RailsのPolymorphicでhas_oneするヘ(^o^)ノ

Polymorphicのhas_one関連を書いてる記事が少なかったので ついでにPolymorphicのおさらいしておく 環境 Ruby 2.3.0 Rails 4.2.6 モデルをgeneratorでつくる # zshなんでエスケープしてますです $ bin/rails g model picture imageable:references\{polymorp…

Arrayでinjectを使ってみるヘ(^o^)ノ

injectはとても便利( ˘ω˘) [1, 2, 3].inject(:+) #=> 6 こんな感じで読みやすくていい感じ total_price = 90 total_price += [10, 20].inject(:+) #=> 120 Railsのバリデーションとかで使うならこんな感じかな # 以下の値を仮定 limit_total_price = 100 tot…

TempingでMixinするmoduleのテストをしてみる٩( ‘ω’ )و

RailsでモデルにMixinするモジュールをテストしたいとき、みなさんどうしてますか? mock_model? stub_model? 自分のダミーテーブル作る? 各モデルでテストする? どれも意外と面倒くさい そんなときはTempingを使うと楽ちん ActiveSupport::Concernのモジ…

masterのBug Fixだけをreleaseブランチへマージする٩( ‘ω’ )و

Git

GitHubにはrelease機能があります Creating Releases - User Documentation masterブランチにマージしてタグ付けてきたが、railsのブランチを見るとリリースブランチが存在します いまさらですが、releaseブランチを作るGitLab Flowを導入しました ( ̄▽ ̄;) …

action_controllerの拡張gemをRSpecでTDD ٩( ‘ω’ )و

action_controllerの拡張gemを作成するときにrspecでテストする ユーザ認証のサンプルgemをTDDで作っていきましょう まずは、gemのひな形を作る $ bundle gem user_auth bundlerが1.9系なら以下のファイルが作成されてるはず ├── Gemfile ├── LICENSE.txt ├─…

ActiveSupport::PerThreadRegistryでThread.currentより安全にグローバルな値を保持する╭( ・ㅂ・)و ̑̑

Railsでグローバルデータを保持したいときに、Thread.currentを使えば簡単ですよね Thread.current[:current_user] = user Thread.current[:current_user] #=> user 僕も気軽に使ってましたが、最近こんな記事を見つけました。 Better globals with a tiny A…

ActiveSupport::OrderedOptionsを使ってHashで.(ドット)を使えるようにする٩( ‘ω’ )و

もはやActiveSupportなしでは生きていけない僕 Hashをイイ感じに拡張してるActiveSupport::OrderedOptionsです rails/railsgithub.com # activesupport/lib/active_support/ordered_options.rb module ActiveSupport class OrderedOptions < Hash ... end en…

Array#extract_options!で引数からオプションをひっこぬく٩( ‘ω’ )و

Railsでのvalidationを設定する時はこう書きますよね? validates :name, :kana, presence: true validatesメソッドに、symbolとhashが複数指定されています オプション部分はHashですねー 引数とオプション(Hash)を分離したいときに大活躍するのがArray#ext…

Enumerable#partitionでブロックの評価が真と偽の要素に分ける٩( ‘ω’ )و

いままでブロックで評価して真のものはselectで、それ以外はrejectとか2回やってた... でも、これ1回でできたらおしゃれですよねー そんなときはEnumerable#partition こんなかんじ( ˘ω˘) array = ["cat", 1, 2, "dog", 0.1] numbers, non_numbers = array.…

Adequate Recordでキャッシュされないケースヘ(^o^)ノ

第65回 Ruby関西 勉強会に参加したよヘ(^o^)ノのつづき スライドに、Adequate Recordでキャッシュされないケースを書いたけど、 ざっくりしすぎなのでまとめてみる( ˘ω˘) find_byを例にactiverecordのコードを読みながら確認していく コードはこんな感じ(コ…

神戸.rb Meetup #13に参加したよヘ(^o^)ノ

神戸.rb Meetup #13に参加しましたー 毎回思うがホント勉強になる 僕の思いもみんなに伝えられたし良かった 今日はActiveSupport::StringInquirerについて調べた 結構こんなの書いちゃいがちですよね? if Rails.env == 'production' ... end それが、こう書…

RubyのHashで要素数を取得するヘ(^o^)ノ

Hashで要素の数を取得してみる Hash#lengthとHash#size favorites_language = { bob: 'Ruby', jone: 'Ruby', tiger: 'Perl' } favorites_language.length #=> 3 favorites_language.size #=> 3 Enumerable#count favorites_language = { bob: 'Ruby', jone: …

第65回 Ruby関西 勉強会に参加したよヘ(^o^)ノ

第65回 Ruby関西 勉強会に参加し、発表してきました。 発表内容はRails4.2の新機能について。 4.2がリリースされてから2ヶ月が経ちますが、ActiveJob中心に紹介させてもらいました。 発表中にデモする時があると思います スライド見ながらタイプするの大変で…

Gitのコンフリクト時にmergetoolで確認してマージするヘ(^o^)ノ

Gitでコンフリクトしたときに、GUIやIDEだと差分が確認しやすいみたい。 でも、僕はVimなの... そこでmergetoolですよ! 実際にやってみよう。 # hello.rb class Hello def say "Hello" end end コミットして、ブランチを切ります。 $ git init $ git add . …

神戸.rb Meetup #12に参加したよーヘ(^o^)ノ

神戸.rb Meetup #12に参加しました。 僕はKonachaについて調べてました。 会社でRailsのJavaScriptをええー感じにテストしたい!ってことなので # Gemfile group :test, :development do gem 'konacha' gem 'selenium-webdriverd' end デフォルトのdriverはs…

神戸.rb Meetup #11 に参加したよヘ(^o^)ノ

Kobe.rbに参加してきたよヘ(^o^)ノ 今日のおやつ!! photo by @spring_aki おいしかった♪ 今日、僕が調べてたのはActiveDecorator + Capybara + RSpecです。 ActiveDecoratorでhelperを良く使いますよねー 例えばこんなの... def full_name content_tag :td…

Rails - ActiveDecoratorのコード読んでみたヘ(^o^)ノ

いつもお世話になります。ActiveDecoratorさま。 @izumin5210さんの「ActiveDecorator読んでみたら超勉強になった」を読んで、そういやコードあんま見てなかったので読んでみた なるほど編 alias_method_chain 既存のメソッドを拡張するときにちょー便利♪ si…

神戸.rb Meetup #10に行ってきたよヘ(^o^)ノ

今日は神戸.rb Meetup #10に行ってきた。 仕事が押して1時間ほど遅れてしまったけど。。。( ̄▽ ̄;) みんながそれぞれ興味あることをワイワイ話したり、もくもくしたりと良い感じです。 おやつもあるっ!!! 僕はcocoon(こくーん?)ってgemを使ってみまし…

Rails - ActiveModel::Callbacksでカスタムコールバックヘ(^o^)ノ

あけましておめでとうございます。 年内で仕事が納まらず、1日からコードをごりごり書いております。。。 さて、ActiveRecord::Callbacksはみなさんおなじみ before_saveとか良く使いますよね? でも、今回やりたい事はこういうの # app/models/comment.rb c…

Shinosaka.rb #11を開催したよーヘ(^o^)ノ

今年最後のShinosaka.rbを開催しましたー DoorKeeper - Shinosaka.rb #11 みなさんのおかげで1年を通して開催することができました。 来年からShinosaka.rbはLTタイムをつくるよー 参加者のなぜ???やRubyに関する困りごとをLTしてもらって、みんなで解決…

DXRubyでプロ生ちゃんを動かしてみたヘ(^o^)ノ

これはプロ生ちゃんAdvent Calendar 2014の18日目の記事ですヘ(^o^)ノ プロ生ちゃんの素材とDXRubyを使って、プロ生ちゃんを動かしてみます。 DXRubyとはゲーム開発初心者向けのDirectXライブラリ 注) 32bit版のRubyでのみ動作します DirectXということは…そ…

Shinosaka.rb #10を開催したよーヘ(^o^)ノ #shinosakarb

Shinosaka.rb #10 今回のお題はLitaであそうぼうーです( ˘ω˘) 同じ日に第1回 Hubot×ChatOps勉強会が開催されていたので... Hubot先生はJavaScript。 仕事でも、ProductでなければRubyでがんばりたい!(開発環境とかチャットとか LitaはRubyってことは、そう…

Rails - touchオプションでupdated_atを更新するヘ(^o^)ノ

class Post < ActiveRecord::Base has_many :comments end class Comment < ActiveRecord::Base belongs_to :post end pry(main)> Post.find(1) +----+-------------+------+-------------------------+-------------------------+ | id | title | body | cr…

Railsでpostした時間を○○minutes agoみたいに表示するヘ(^o^)ノ

今日、Twitterで@netwillnetさんと@chiastoliteさんのツイートをみてやってみた @netwillnet time_ago_in_wordsすかね— Hiroyuki Morita (@chiastolite) 2014, 11月 17 Railsではtime_ago_in_wordsヘルパーが用意されています でも、この子はリアルタイムで…

Railsでデータを登録後にメールを送信ヘ(^o^)ノ

Railsでユーザ登録後にメール送信することはよくあります。 今日、その部分を見てて気になったのでメモ程度に もともとはこんな感じのコードやった # app/controllers/user.rb def create @user = Post.new(user_params) @user.save UserMailer.wellcome_ema…

RubyWorld Conference day 1 ヘ(^o^)ノ

RubyWorld Conference 2014に参加してきましたー 前日に松江入りヘ(^o^)ノ 錦織 圭も帰国して食べたい!と言っていたのどぐろー day 1 ホテルを出て、「さむーっ」(((((((( ;゚Д゚)))))))) Matzの基調講演 Rubyが教えてくれたこと 毎年、Matzの基調講演は楽し…

Gretelで簡単パンくずリストヘ(^o^)ノ

Railsでパンくずリストを表示するのにGretelをつかってみた 基本的な使い方ー # config/breadcrumbs.rb crumb :root do link 'Home', root_path end crumb :posts do link 'Posts', posts_path end crumb :post do |post| link post.title, post parent :pos…

RansackでDateTime型の検索してみるヘ(^o^)ノ

Ransackはとっても便利ですよねー さらっとしか使えてないので、ちょっと調べてみました eqは完全一致、contは中間一致 などなどとっても簡単に検索機能を実装できます そこでDateTime型のフィールドを検索したい場合、時分秒までは検索しないですよね? や…

Railsで同じwhere句のチェインヘ(^o^)ノ

チェインかチェーンかはさておき Railsではメソッドチェインは普通に使いますよね? scopeのチェインもよく使います こんな感じ Post.user_by(@current_user).search_tag_by('Ruby') では、動的に利用したいscopeを利用したい場合は? scopeではないですが、…

Shinosaka.rb #9を開催したよーヘ(^o^)ノ #shinosakarb

Shinosaka.rb #9を開催しました 今日は和室でもくもく会 #shinosakarb pic.twitter.com/nePBb2RexO— ちまめ (@chimame_rt) 2014, 10月 25 Shinosaka.rbに行ってきた。良かった。 むらじゅんさんに付きっきりで教えてもらいました。 「シンボル」についての長…

Railsのdiv_forヘルパーを使ってみたヘ(^o^)ノ

Railsのヘルパーでdiv_forなるものがあります。 この子ちょっと便利で、いわゆるページ内リンクを実装できます。 使い方は <% @post.comments do |post_comment| %> <%= div_for post_comment do %> <%= post_comment.comment %> <% end %> <% end %> すると…

gitでエイリアスを設定するヘ(^o^)ノ

Git

毎日、gitを使ってるとgit xxってコマンドを何回も打たないとイケない... つらい 面倒くさがりな僕が大好きエイリアス よく使うのは、git status、git log、git checkout、git branchといったとこでしょうか? gitの設定はsystem、global、カレント?(なんて…

RSpecでhas_manyのテストヘ(^o^)ノ

Railsでhas_manyなテストするときー こんなのをテストしたい場合 RSpec.describe Address, :type => :model do describe 'Relation' do it 'has many customers' do expect(address.customers).to match_array customers end end end まずは、FactoryGirlで…

Rubyで実行ファイルのパスを取得するヘ(^o^)ノ

__FILE__は実行ファイルのパス、カレントパスを取得できます。 __FILE__は実行ファイルのファイルパスを取得できます。 Railsではevalを多様しています。 コードを読んでるとこんなのをよく目にします。 class_eval <<-RUBY, __FILE__, __LINE__ ... end な…

pry、pry-docを使ってRuby学習ヘ(^o^)ノ

Rubyでコードを書いているとメソッドの使い方をググったり、 ドキュメントみたりしますよねー そこで、pryとpry-docですよ! さらっと機能をご紹介♪ インストール $ gem install pry pry-doc 起動 コマンドラインでpryコマンドを実行します。 $ pry [1] pry(…

Rubyのブロックを使うヘ(^o^)ノ

こんなメソッドを作ってみる User = Struct.new(:name) user = User.new("murajun1978") def hello(name) "Hello, #{name}" end hello(user.name) # => "Hello, murajun1978" よくある感じ んじゃ、ブロックを使ってみよう User = Struct.new(:name) user = …

Rubyで消費税の計算やってみたヘ(^o^)ノ

こんなメソッドを作ってみます require 'bigdecimal' Order = Struct.new(:sub_total) def total(order, tax) (BigDecimal(order.sub_total) * BigDecimal(tax.to_s)).ceil end order = Order.new(100) total(order, 1.08) # => 108 でも、これじゃ毎回消費…

Arrayで指定範囲のデータを取得するヘ(^o^)ノ

module Enumerableメソッドでいっぱつ解決 # 1から100までの数値だけを取得したい場合 [1, 30, 4000, 10, 50, 8000].grep(1..100) # => [1, 30, 10, 50] # String型のみ取得したい場合 [100, "murajun", 40, 100000, "murajun1978"].grep(String) # => ["mur…

RSpecでおっそーいテストを特定するヘ(^o^)ノ

今日は、プロジェクトチームで呑みでしたー٩( ‘ω’ )و ホントに良いチームだなーって思います。 このチーム、まじで楽しいのだよwww さて、今のプロジェクトでJenkinsが遅いのです。。。 スタブやモックを利用するのもありです。 RSpecのオプションに-pなるオ…

RubyのArray要素の計算ヘ(^o^)ノ

Arrayの要素を計算したいケースが多々あります。 代表的なものがこれ [1, 2, 3].inject(:+) # => 6 引数を渡したい! [1, 2, 3].each_with_object(1).map(&:+) # => [2, 3, 4] 二次元配列で要素ごとの集計 0番目、1番目、3番目の要素を集計しています。 [[1,…

Railsのmodelインスタンスでexists?を使うと...

Array#include?のレスポンス改善ヘ(^o^)ノで改善されたレスポンスですが、まだ遅いw と言うわけで、ログを眺めていましたー するとこんなクエリーが... 注) テーブル名は勝手につけた Post Exists (0.2ms) SELECT 1 AS one FROM "posts" LIMIT 1 コードを見…