Ruby
 Computer >> コンピューター >  >> プログラミング >> Ruby

Rails4.2のあまり知られていない機能

Rails 4.2の最初のベータ版は先週発表されましたが、それはすでに驚くべきものに見えます。 ActiveJob、Web Console、Adequate Record、ForeignKeyのサポートを自分のアプリで使用できることにとても興奮しています。

しかし、Railsの美しさは細部にあります。 また、少し掘り下げてみると、Railsでの日常業務を完全に改善する、あまり宣伝されていない機能がいくつか見つかります。

設定ファイルを簡単にロード

OK、私は偏見があるかもしれません。しかし、構成ファイルをロードするための組み込みの方法があることは素晴らしいことです。

config_for 、Rails 4.2の新機能で、期待どおりに機能します:

config / redis.yml
development:
  host: localhost
  port: 6379
test:
  host: localhost
  port: 6379
production:
  host: redis-production
  port: 6379
irb(main):001:0> Rails.application.config_for(:redis)
=> {"host"=>"localhost", "port"=>6379}

つまり、config_for(:redis)を呼び出すと 、config/redis.ymlを検索します Railsアプリで解析し、RAILS_ENVの正しい構成を返します 。

yamlにERBを入れることもできます:

config / redis.yml
development:
  host: localhost
  port: <%= ENV['REDIS_PORT'] %>
test:
  host: localhost
  port: <%= ENV['REDIS_PORT'] %>
production:
  host: redis-production
  port: <%= ENV['REDIS_PORT'] %>
$ REDIS_PORT=6380 bin/rails c
Loading development environment (Rails 4.2.0.beta1)
irb(main):001:0>  Rails.application.config_for(:redis)
=> {"host"=>"localhost", "port"=>6380}

アプリで多くのサービスを構成すると、初期化子がはるかに読みやすくなります。

アプリのブートストラップ

ほとんどのRailsアプリでは、試してみる前にいくつかのコマンドを実行する必要があります。ほとんど空のRailsアプリでも、起動する前にデータベースを設定する必要があります。

そのため、Railsは、設定より規約を使用して、セットアップコード専用の場所を作成しました:bin/setup

デフォルトは適切です。ただし、bin/setup また、アプリを起動するために必要なその他のコードを配置する場所でもあります。

これが慣例であるため、アプリのブートストラップスクリプトを既に作成している場合は、名前をbin/setupに変更します。 、アプリを使用しているユーザーが簡単に始められるようにします。

bin/setup 新しいRailsアプリを生成するときに行う決定が1つ少なくなります。そして、bin/setupを実行する習慣を身に付けたら git pullを実行した後 、rake db:setupを実行することを覚えておく必要はありません。 新しいアプリを再度生成するとき。

ハッシュ値を変換する

これは、Rubyに組み込まれていることを望むのに十分な頻度で必要なもう1つのことです。 transform_valuesを呼び出すとき ハッシュでは、mapを呼び出すように機能します ハッシュ値に対して、置き換えられた値に関連付けられた元のキーを含む新しいハッシュを返します:

h = {a: 1, b: 2, c: 3}

h.transform_values { |v| v * 2 } # => {a: 2, b: 4, c: 6}

十分に単純です。しかし、それがどれほど頻繁に役立つかに驚くでしょう。

ボーナス:より多くの構成!

Rails 4.2は、独自のグローバル構成を設定する簡単な方法を提供します。

Rails.application.config.x.some_configuration_key = "Some Value"

Rails.application.config.x.some_configuration_key # => "Some Value"
Rails.configuration.x.some_configuration_key # => "Some Value"

これは、config_forと組み合わせると特に効果的です。 :

app_config = Rails.application.config_for(:app)
Rails.application.config.x.block_phone_calls = app_config["block_phone_calls"]

そしてもっとあります!

Rails4.2は素晴らしいリリースになるように設定されているようです。しかし、Railsで毎日作業するのがとても素晴らしいのは、ちょっとした改良です。したがって、まだ読んでいない場合は、4.2リリースノートをざっと見て、他に役立つ改善点を見つけてください。

(そして、あなたがするなら かっこいいものを見つけて、自分だけに留めないでください。ここで共有してください。そうすれば、私たち全員が新しいことを学ぶことができます!)


  1. AndroidでのGoogleアシスタントの最高の機能

    他のすべてのアシスタントにお金をかけさせたいGoogleアシスタントがいます。名前はGoogleアシスタントと呼ばれているため、一目瞭然です。 Alexa、Siri、Cortanaを水から吹き飛ばしたいのです。 Googleアシスタントは、昨年5月にGoogle I / Oで最初に発表されましたが、GoogleXLとPixelスマートフォンでのみ使用されていました。 Googleは、アシスタントを他の電話に移動させる準備ができています。そのため、このGoogleアシスタントで何ができるかを理解しておくことをお勧めします。 休暇の行き先を知る 特定の国を訪問しているが、どの名所に行くべきかわ

  2. 最高の技術に優しいバックパックの5

    あなたがハイテクギアを持って旅行するなら、あなたはあなたのものを標準的なバックパックにチャックすることの欲求不満を知っています。メモリーカードのような小さなものはしばしば深淵に失われ、高価な電子機器は傷が付いたり損傷したりする可能性があります。幸いなことに、すべての電子機器をそのままにして旅行するためのより良い方法があります。 1。ライフパックソーラーパワー&盗難防止バックパック ソルガードのライフパックは、テクノロジーを保持するだけでなく、のバックパックです。 テクノロジーの一部。 Lifepackは、標準のバックパックにはないハイテクアップグレードを多数備えています。まず、内蔵のパワーバ