日常

ケ・セラ・セラ

地味に便利だと思って使っているシェルalias

これなんですが、(一部から頭悪そうとか聞こえてくる)

alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'
alias .....='cd ../../../..'
alias ......='cd ../../../../..'
alias .......='cd ../../../../../..'

pwd するとたまに深かったりするじゃないですか。こんな風に

/path/to/d/i/r/too/deep

pwd の結果の path を見ながら、移動したい場所まで 1, 2, 3 と数えながらドットを打つわけです。

Railsでnpmを使う今の所のやり方

自分の場合こうやっていますというものです。

Rails.root に普通に package.json を置き、普通に npm install する .gitignore で /node_modules などしておく

application.js はどうしているかというと、 特に問題無ければ require_tree . で全部対象にすればよい。 後述するが、これでは node_modules 以下も全部対象に なってしまうので、それではまずい場合には個別に指定するなど変更する。

//= require_tree .

/node_modules を assets.paths に追加する

# config/initializers/assets.rb
Rails.application.config.assets.paths << Rails.root.join("node_modules")

precompile 対象に必要なものを追加する

config/application.rb
   config.assets.precompile += %w(
     foo.js/*.js
     foo.js/css/bar.css
   )

こんな感じに使います

<%= stylesheet_link_tag "foo.js/css/bar.css", media: "all" %>
<%= javascript_include_tag "foo.js/js/foo.js" %>
<%= asset_path("foo.js/js/bar.js") %>

ruby 1行で rescue

最初の行、そうかー rescue でこういう if 文が書けるのかー。と思った。

if (ActionDispatch::Integration::Session.instance_method(:process_with_kwargs) rescue false)
  let(:send_request) do
    send http_method, path, params: request_body, headers: env
  end
else
  let(:send_request) do
    send http_method, path, request_body, env
  end
end

rails layout に対して個別に値を設定したい時

例えばこう、共通のレイアウトを適用したいけれど、タイトルだけは個々のものを使いたい。みたいな事例です。

# sample_layout.html.erb
<html>
<head>
  <title><%= yield(:title) %></title>
</head>
<body>
  <%= yield %>
</body>
</html>

個々の view で provide しました。

<%= provide(:title, @article.title) %>
<%= raw(@article.content) %>

rails layout を デフォルト(application.html.erb)から変更したい時

こんな風に使い分けることができる

class ArticlesController < ApplicationController

  def without_layout
    render layout: false
  end

  def presentation
    render layout: "presentation"
  end

end

某サービスにスライド機能つけようとしています