Planet Ruby News Last Update: Wednesday, 20. September 2017 07:00

Bundler News - Mar 28

Bundler 1.14: So many fixes

What’s new in Bundler 1.14?

We somehow missed writing up an announcement when Bundler 1.14 was initially released, but several people kindly pointed out the problem. Just 48 days late, here’s what’s new in Bundler 1.14! In this feature release, we added several small features, and fixed a giant pile of bugs.

Conservative updates

Building on the previous fine controls for the update com 6 months ago

What’s new in Bundler 1.14?

We somehow missed writing up an announcement when Bundler 1.14 was initially released, but several people kindly pointed out the problem. Just 48 days late, here’s what’s new in Bundler 1.14! In this feature release, we added several small features, and fixed a giant pile of bugs.

Conservative updates

Building on the previous fine controls for the update command, the illustrious @chrismo worked his way through many gnarly possible usage combinations to implement the update --conservative flag. Using the conservative flag allows bundle update GEM to update the version of GEM, but prevents Bundler from updating the versions of any of the gems that GEM depends on. For a more in-depth discussion of why this is useful, check out the discussion of overlapping dependencies in the update command man page.

Checksum validation

As part of the compact index format provided by RubyGems.org, Bundler now has access to checksums for every .gem file. Starting with version 1.14, Bundler actively validates those checksums against downloaded .gem files before installing them. Hooray! 🎉

Improved platform support

Courtesy of some intensive work by @segiddins, Bundler is getting better at handling applications that will be run on more than one platform, like both Unix and Windows. To start with, Bundler will now print a warning if your Gemfile includes any gems that will never be installed due to a platform block. For gems that need to be compiled even though the author has uploaded a binary gem, the force_ruby_platform config setting has you covered. Lastly, the new config setting specific_platform tells Bundler to consider platforms during dependency resolution. This setting should significantly improve things for users installing a single bundle on more than one platform. We expect the specific_platform setting to become the default behavior in Bundler 2.0.

Improved required Ruby versions

Building on the support for Ruby and RubyGems version that was added in 1.13, Bundler 1.14 improves resolver error messages. If any gem conflicts with your Ruby or RubyGems version, the error message will now show both the conflicting dependencies and the chain of parent dependencies that led to the conflict.

Various improvements

In addition to those larger additions, we made some smaller tweaks with the aim of smoothing and improving the overall experience of using Bundler:

  • Installing gems using sudo will now always prompt for a password, even if the sudo password is cached from an earlier command
  • The Gemfile method platform now supports Ruby 2.5, allowing arguments like :ruby_25 or :mri_25.
  • The “lockfile is missing dependencies” error (triggered by certain old lock files that were missing information) is no longer fatal. We now print instructions on how to repair the Gemfile, and install using one thread.
  • Running require "bundler" is now about five times faster than it used to be.
  • Bundler now works when run by users without a home directory.
  • The output from bundle env is now preformatted as Markdown for pasting into a GitHub issue.
  • After Bundler 2.0 is (eventually) released, Bundler 1.14 and greater will be able to automatically switch to Bundler 2.0+ for apps that need it.

We also fixed over 60 separate bugs, and you can read about every single one of them in the Bundler 1.14 changelog.

How To Upgrade

Run gem install bundler to upgrade to the newest version of Bundler.

6 months ago

Bundler News - Apr 28

The new index format, Fastly, and Bundler 1.12

A new version of Bundler has arrived! With 1.12, we’re shipping one huge change and several smaller changes—the short version is that Bundler is getting faster and more capable.

The new index format

The biggest change landing in this release is the fabled new index format, which has been in development for over two years. It has required significant work on Bundler and the Bundler API w over a year ago

A new version of Bundler has arrived! With 1.12, we’re shipping one huge change and several smaller changes—the short version is that Bundler is getting faster and more capable.

The new index format

The biggest change landing in this release is the fabled new index format, which has been in development for over two years. It has required significant work on Bundler and the Bundler API webapp, but it also lays the foundation for years of speed, stability, and security. In addition to the speed increases provided by the format itself, we’re also serving the new index directly from the Fastly CDN. That means Bundler will be able to talk to a server located nearby, no matter where you are in the world. We expect that to make a huge difference, especially in Oceania and Africa. 🎉

exec performance

On top of the new index, we also made specific improvements to the performance of bundle exec. It now avoids running Kernel.exec if possible, and only evaluates the Gemfile one time, instead of twice. Added together, these changes should speed up any bundle exec command by around 0.25 seconds!

outdated by version size

Another new feature is the ability to run bundle outdated with the flags --major, --minor, and --patch. Using those flags, you can limit Bundler to only show you new versions that are both allowed by your Gemfile and also meet the criteria of only changing the major, minor, or patch version of the gem. You can combine them to get only minor and patch updates, or even only major and patch updates (but I have no idea why you would want to do that).

Ruby versions

Our final big feature is support for locking Ruby versions! That means that you can put ruby "~> 2.3" in your Gemfile, and Bundler will save your exact Ruby version (say, 2.3.1) into your Gemfile.lock. You can update the ruby version by running bundle update --ruby, and that will update the lock to match your current version of Ruby the same way Bundler currently updates gem versions.

Minor changes include adding support for Ruby 2.4, RubyGems 2.6.3, and support for the Ruby 2.3 feature of freezing all string literals.

Changelog

We added a bunch of other small tweaks, features, and bugfixes, so be sure to check out the changelog for the entire list!

Updating

To get the newest version of Bundler, run gem install bundler. If you have any issues, please check out our issues guide and let us know!

over a year ago

Bundler News - Dec 12

Version 1.11 released

Bundler 1.11 is here! Six and a half months after the last big release, we’re finally ready to ship 1.11.

I know it’s been a while, but there’s a pretty good reason for that. Over the summer, the team was busy supervising four Google Summer of Code students:

  • We made a significant amount of progress on the new compact gem index, which ought to ship in 1.12 in the near futu over a year ago

Bundler 1.11 is here! Six and a half months after the last big release, we’re finally ready to ship 1.11.

I know it’s been a while, but there’s a pretty good reason for that. Over the summer, the team was busy supervising four Google Summer of Code students:

  • We made a significant amount of progress on the new compact gem index, which ought to ship in 1.12 in the near future.
  • We improved the Bundler website and online documentation.
  • We’ve created a solid base for Bundler 2.0.
  • We prototyped a new plugin system.

In addition, the Bundler Core team has spent a lot of time focusing on the development experience of bundler itself. The bundler codebase is over five years old, and contains code from over 400 contributors. That can make it rather daunting to start contributing, and also makes it hard to ensure that all of the code in bundler is up to the same standards (and is fit to last for the next five years!). In order to make things more consistent, we’ve introduced RuboCop (and thus a style guide), we’ve instituted a build bot to ensure that master is never failing, and have decided to subject 100% of the new code introduced to code review. This is a big step forward, and lets me confidently say that this will be our best release yet!

That out of the way, what’s actually in this long-awaited release?

New features

First up, we’ve combed through a few years worth of bundler issues, and have improved the error messaging for every single one of them. Our goal is to never show an exception with a backtrace, and instead present a friendly and helpful error message when things go awry – and we’re now pretty close to that.

The dependency resolver has also seen a few updates. Continuing the theme of improved errors, version conflicts will now do a better job of reporting what versions of every gem have been activated, making it even easier to figure out the best way to resolve said conflict. Additionally, resolution has been sped up by over 25x in pathological cases. That’s a pretty nice win.

Finally, we’ve laid the groundwork for resolving gems based on the current version of Ruby. Once the new index is rolled out, Bundler will make sure to choose gems whose required_ruby_version matches the Ruby you are running on.

Bugfixes

The real meat of this release comes in the bugfix section, however. Across almost four hundred commits, we’ve squashed upwards of fifty unique bugs. Meaning this version of bundler should be the fastest, most stable version we’ve ever released.

What’s Next

As I mentioned earlier, this long gap between releases doesn’t mean we’re slowing down development – quite the opposite, in fact! We’re actively working on bundler 1.12 and 2.0 at this very moment, and are incredibly exited to get the new index into people’s hands as fast as we possibly can.

Updating

To install the last release of Bundler, you can run:

$ [sudo] gem install bundler

For all the details, don’t miss the Changelog!

over a year ago

Ruby on Rails News - Aug 28

Image alt text gone, restart/cache command fixes and more!

Hello everyone! This is Vipul from Rainy Pune ☔ , cozying up with a ☕, bringing you a recap of the changes  that made it to Rails this week. If you too want to contribute to Rails, head over to the issues to help us out! 24 days ago

Hello everyone!
This is Vipul from Rainy Pune ☔ , cozying up with a ☕, bringing you a recap of the changes  that made it to Rails this week.
If you too want to contribute to Rails, head over to the issues to help us out!

Do not generate default alt text in image tags

Previously Rails auto-generated alt text for an image from the file name if it was not provided with an image_tag. This generation could be distracting and fatiguing for screen reader users if not considered properly.

After this change, if authors leave images without alt text, Rails will not pre fill it anymore, leaving screen readers to prompt authors to fix the issue.

Prevent extra “SET time zone” in configure_connection

Previously Rails would end up setting database connection timezone twice, once if passed via configuration in configure_connection and secondly while setting default timezone.

This change removes setting timezone on database twice if timezone is already passed via configuration variables.

Add TransactionTimeout for MySQL error code 1205

This PR adds TransactionTimeout error to the MySQL adapter, which handles the error:
Lock wait timeout exceeded; try restarting transaction (MySQL error 1205)

Encode Content-Disposition filenames according to RFC 2231 in Active Storage

Before this change, urls for files with non-english names would create issues in Active Storage.

This change fixes encoding Content-Disposition for filenames to RFC 2231, to fix this issue.

For signed/encrypted cookies with ``:expires` like

cookies.signed[:user_name] = { value: "bob", expires: 2.hours }

Rails now embeds the expiry within the written cookie payload. This way Rails isn’t reliant on clients to honor the expiry, but can verify it independently server-side.

Make restart and dev:cache tasks work when customizing pid file path

Previously rails dev:cache failed to restart the Rails server when it was started with a custom pid file path.
With this change, restart no longer fails for a custom pid file and successfully restarts Rails server on dev:cache changes.

Fix can't modify frozen String error in display_image

This change does a quick fix for an error with display_image in System tests, which is used for screenshots, that used to raise an error when trying to modify a frozen string.

Fixes :inverse_of association option not working with eager_loading

Previously calling an eager_load on :inverse_of association failed. This was a regression from Rails 5.1 release. 

This change, fixes the regression.

That’s all for this week! Feel free to check the full list of commits if you are interested. Until next week!

24 days ago

JetBrains RubyMine News - Aug 25

RubyMine 2017.2.3 EAP: Better Debugger

Hi everyone, RubyMine 2017.2.3 EAP has been released, introducing a number of improvements for the debugger and other bug-fixes. Better Debugger Our recent drive to enhance performance has affected the debugger too. In this RubyMine EAP we’re bringing these debugging … Continue reading → 27 days ago

Hi everyone,

RubyMine 2017.2.3 EAP has been released, introducing a number of improvements for the debugger and other bug-fixes.

Better Debugger

Our recent drive to enhance performance has affected the debugger too. In this RubyMine EAP we’re bringing these debugging improvements:

  1. No more issues with multi-process debug targets. Now it’s possible to debug servers like Passenger, Zeus, and Foreman painlessly. Moreover, Attach to Local process now perfectly works with these servers: just select the web/deployment server during the attach phase, and RubyMine will stop at the breakpoints in all its subprocesses.
  2. The debugger is now smart enough to detect costly operations triggered by watch expressions evaluation. It will stop such operations if they’re likely to slow down the debugging process. For example, if any tracked variables use SQL queries for the to_s evaluation, RubyMine will not slow down during stepping, which it did before.

Other improvements

These and more bugs have been fixed in this update:

Download this Early Access Program build from Confluence.

See the release notes for the full list of improvements, and please report your issues to the
tracker.

Cheers!

Your RubyMine Team

27 days ago

Phusion News - Aug 23

Passenger 5.1.8: Nginx 1.12.1, webpacker, fixes

Version 5.1.8 of the Passenger application server for Ruby, Node.js, Meteor and Python has been released. We have built a few minor improvements and fixes, like improved logging, faster serving of Webpacker assets and a fix for a socket leak regression. In addition, we've upgraded Nginx in

29 days ago
Passenger 5.1.8: Nginx 1.12.1, webpacker, fixes

Version 5.1.8 of the Passenger application server for Ruby, Node.js, Meteor and Python has been released. We have built a few minor improvements and fixes, like improved logging, faster serving of Webpacker assets and a fix for a socket leak regression. In addition, we've upgraded Nginx in our APT package to version 1.12.1.

The 5.1.x series of Passenger brings a plethora of improvements in uptime maximization, security and efficiency. Please be aware that you can enjoy enterprise features and sponsor the open source development directly by buying Phusion Passenger Enterprise.

APT Nginx package to 1.12.1

The APT Nginx package we provide for older distributions (Ubuntu Xenial / Debian Jessie and below) was stuck at Nginx version 1.10.3 due to incompatibilities in the module set that those distributions use. Updated module versions have solved these issues, so we've upgraded the package to the latest stable Nginx (1.12.1).

Webpacker asset support

Passenger Standalone now automatically uses Nginx to serves static asset URLs that conform to the webpacker gem format (GH-1966).

Improved logging

We've changed the log format to be shorter and more informative. The new format significantly shortens the thread ID, and includes the message's (abbreviated) log level so that it's a lot easier to filter through messages.

Various fixes

  • [Enterprise] Fixes a potential use-after-free bug when reporting usage data to the Phusion licensing server. This bug only occurs when Passenger Enterprise is running inside a container.
  • [Standalone] If configured to listen on a Unix domain socket, properly cleans up this socket on Nginx shutdown (a regression from 5.1.6). Closes GH-1969.
  • [Standalone] Fixes the --max-requests option when using the builtin engine (a regression from 5.1.4).

Installing 5.1.8

Please see the installation guide.

Upgrading to 5.1.8

We strongly advise staying up to date with the latest version.

See also the upgrade notes below!

Passenger 5.1.8: Nginx 1.12.1, webpacker, fixes
OS X
Passenger 5.1.8: Nginx 1.12.1, webpacker, fixes
Debian
Passenger 5.1.8: Nginx 1.12.1, webpacker, fixes
Ubuntu
Passenger 5.1.8: Nginx 1.12.1, webpacker, fixes
Heroku
Passenger 5.1.8: Nginx 1.12.1, webpacker, fixes
Red Hat
Passenger 5.1.8: Nginx 1.12.1, webpacker, fixes
CentOS
Passenger 5.1.8: Nginx 1.12.1, webpacker, fixes
Ruby gem
Passenger 5.1.8: Nginx 1.12.1, webpacker, fixes
Tarball
Passenger 5.1.8: Nginx 1.12.1, webpacker, fixes
Docker

If you are upgrading from 4.x, please read the 5.0 upgrade notes to learn about potential upgrade caveats.

Download issue with old gem version

Old versions of gem (below 2.2.0, released in 2013) may fail to download the Passenger Enterprise gem from our rubygem hosting software (Gem in a box).

ERROR: Could not find a valid gem 'passenger-enterprise-server' (= 5.1.4), here is why:  
 Unable to download data from https://..@www.phusionpassenger.com/enterprise_gems/
 - bad response Unauthorized 401 

If this happens, please upgrade to a newer version of gem:

gem install rubygems-update; update_rubygems  

Special notes about capistrano-passenger

If you are using Capistrano and capistrano-passenger, then it may fail with this error:

SSHKit::Runner::ExecuteError: Exception while executing as user@99.99.99.99: undefined method `[]' for nil:NilClass

NoMethodError: undefined method `[]' for nil:NilClass

Tasks: TOP => passenger:restart

This is due to an incompatibility in capistrano-passenger with Passenger 5.0.22 and later. Please upgrade capistrano-passenger to 0.2.0 or later.

Final

Phusion Passenger's core is open source. Please fork or watch us on Github. :)

Passenger 5.1.8: Nginx 1.12.1, webpacker, fixes

Passenger ensures that your Ruby, Python, Node.js and Meteor apps, microservices, and APIs are served with outstanding reliability, performance and control. For additional features and premium support, check out the enterprise edition.

29 days ago

Ruby on Rails News - Aug 15

Three new committers: George, Javan, Ryuta

We’re happy to announce three new members of the Rails committers team: George, Javan, and Ryuta 🎉! 1 months ago

We’re happy to announce three new members of the Rails committers team: George, Javan, and Ryuta 🎉!

  • George Claghorn: George has been an integral part in creating our new Active Storage framework. He wrote a substantial part of the framework itself by extracting hard-won lessons from his work at Basecamp on moving our storage to the cloud. George also managed the stand-alone rails/activestorage repository with issue and PR processing prior to its merge into the framework proper. George works at Basecamp and lives in Philadelphia.

  • Javan Makhmali: Javan has written the majority of the JavaScript needed for Action Cable and Active Storage, as well as being a significant contributor to Webpacker. He’s also the co-author of Trix and other JavaScript libraries and frameworks originating at Basecamp. Javan lives in Ann Arbor.

  • Ryuta Kamizono: Ryuta is a top 20 all-time Rails contributor with work going back to 2013. He’s got his fingerprints all over the framework, but have in particular been helping with Active Record. Ryuta lives in Tokyo.

As a reminder, the committer team works together with the core team by assisting with pull-requests processing and making changes to the framework, but does not have the keys to make final releases or set policy. All members of the core team came up through working on this team.

1 months ago

Ruby on Rails News - Aug 03

Rails 5.1.3 released

Hi everyone, 2 months ago

Hi everyone,

I am happy to announce that Rails 5.1.3 has been released.

CHANGES since 5.1.2

To view the changes for each gem, please read the changelogs on GitHub:

Full listing

To see the full list of changes, check out all the commits on GitHub.

SHA-256

If you’d like to verify that your gem is the same as the one I’ve uploaded, please use these SHA-256 hashes.

Here are the checksums for 5.1.3:

$ shasum -a 256 *-5.1.3.gem
4cfe1343217caa199ce2a2de485a62271b0c81e8c3cf72f7c039c5eddf3c7bd0  actioncable-5.1.3.gem
a2841384bb40951e6d63ca78ca665bdfcc792c732825cc2c83ae4b4d05363f67  actionmailer-5.1.3.gem
55488d20cac3668040f0d2d5531e81318a0fa206ac8f687565c6ec49345c9f45  actionpack-5.1.3.gem
b744e9cbb2760754fa4c3c2b57c68916756a5f032fa6307ca362379e02a48857  actionview-5.1.3.gem
15e98c4bf71941ae81f7e4e7c5d9627c09cd9b4d0c1a36bf94b42910eb8874a3  activejob-5.1.3.gem
ad3aa2e0dd9a003ea530e0806dd685e9c5574bfa36bb28aa3d182577c121babb  activemodel-5.1.3.gem
e83b04f42519e94a0aa51af06e61ea8aaacfa5cb8d67a1aebaf6f11d96ba7725  activerecord-5.1.3.gem
b01fa04345c87526fd22affc4e46dd22bf125c608853d13bf093dab08c45219b  activesupport-5.1.3.gem
28c73c5aba5ce71d4bcd6af273be3e565ab7a49abd22fd511dc79fcb36329d19  rails-5.1.3.gem
9aa1b3abd29a7d71b3f9d04dfce2858a2e86841dd7f3dc696344000c745b1651  railties-5.1.3.gem

As always, huge thanks to the many contributors who helped with this release.

2 months ago

Ruby on Rails News - Jul 31

Rails 5.0.5 and 5.1.3.rc3 released

Hi everyone, 2 months ago

Hi everyone,

I am happy to announce that Rails 5.0.5 and 5.1.3.rc3 have been released.

If no regressions are found for 5.1.3.rc3, expect the final release on Thursday, August 3, 2017. If you find one, please open an issue on GitHub and mention me (@kaspth) on it, so that we can fix it before the final release.

CHANGES since 5.0.4

To view the changes for each gem, please read the changelogs on GitHub:

Full listing

To see the full list of changes, check out all the commits on GitHub.

CHANGES since 5.1.2

To view the changes for each gem, please read the changelogs on GitHub:

Full listing

To see the full list of changes, check out all the commits on GitHub.

SHA-256

If you’d like to verify that your gem is the same as the one I’ve uploaded, please use these SHA-256 hashes.

Here are the checksums for 5.0.5:

$ shasum -a 256 *-5.0.5.gem
479efb52e6b6fedfcafcd3530be24dc7b9829dd41e0f5a37212ed4d67146f51b  actioncable-5.0.5.gem
c48a93381dde7206fd2cb0ddc00a922021fcdf6bce35c262bd357c7922a63fb7  actionmailer-5.0.5.gem
2202866aded8d787efb4c3a7e6d4f55262ac4f2acfe92c097855a9afc8229f37  actionpack-5.0.5.gem
cb4d2928b63f29931a6d05adde78bcf7dac83bf79a05911547068af2da765a6b  actionview-5.0.5.gem
af79fc954e9ddece35ef4975b9a244b2bb48a76e17a19c0dff7233fc75852877  activejob-5.0.5.gem
e6b8fc4ffb6ab748b28e5a234d1d2f3e49689b0655166e188014a582b50cdee2  activemodel-5.0.5.gem
89651a138aaf0755d2a9db7cda3e914e93f86b4504bcb31b41fb379e2dde28de  activerecord-5.0.5.gem
00c714979fffa05846a2d044f24f9569a5ae471b2e20c73fdf3172f1d81edfb1  activesupport-5.0.5.gem
15e2c25872e5dc2069b0d7bf4535eb4887e77d49166ccfba5871a904c18957b1  rails-5.0.5.gem
5b1cb323c3fa70ff5801f58fbb9688a8231a4cc0414d3c97d0ad0a5bc94fbefb  railties-5.0.5.gem

Here are the checksums for 5.1.3.rc3:

$ shasum -a 256 *-5.1.3.rc3.gem
f1b9758a78543bb27f65946a65a94e803140787b781f24983c696d89315685ea  actioncable-5.1.3.rc3.gem
8c57af610a7bac0cd91c0b09a0df2f66575ddb20204342b98d28bd6d051578b0  actionmailer-5.1.3.rc3.gem
9e69dcef628dbe12b5937a368e55ac79b71b38261d4187465200352d5278572d  actionpack-5.1.3.rc3.gem
d93ac77d4d6d2fa468a7407fda4088c9ca975aa00e78c18dd2b71e398af3b3dd  actionview-5.1.3.rc3.gem
2d0410f1a279b27e4bacddca4a8bc1f88c0e8c18429751370be8d41fb630cba9  activejob-5.1.3.rc3.gem
987567e336267497cb9222e4e689f58bfd06e9829071ae32d65b9a291fb0e8b3  activemodel-5.1.3.rc3.gem
159c9d330cec1ac9a92c9e0c68f0f088b4273f0ba163c3159f4a7369d9948229  activerecord-5.1.3.rc3.gem
6d4320c2e93e9f6239438cf7886b1111956b5d72cb5a7026402fa29021ae571f  activesupport-5.1.3.rc3.gem
f3551c5eec9649bc225552e0ed8ecee6dac9f4f97ca13e78bf018e36385852e8  rails-5.1.3.rc3.gem
59669b8098787c077b76642804a1543cdca8fabafabad7bbce74622508f79a3d  railties-5.1.3.rc3.gem

As always, huge thanks to the many contributors who helped with this release.

2 months ago

Phusion News - Jul 27

Hiring: Phusioneer (strong C++ and love for tech)

Phusion was founded with the belief that server maintenance shouldn’t be difficult. Over half a million websites worldwide use Passenger to improve web app performance, boost productivity, and maximize security.

We are looking for a passionate and skilled Developer who can join the Passenger team at the forefront of

2 months ago
Hiring: Phusioneer (strong C++ and love for tech)

Phusion was founded with the belief that server maintenance shouldn’t be difficult. Over half a million websites worldwide use Passenger to improve web app performance, boost productivity, and maximize security.

We are looking for a passionate and skilled Developer who can join the Passenger team at the forefront of its development, ideally at our beautiful Amsterdam office.

Let's team up

Calling for C++ engineers
The core of Passenger is written in C++, that means you have to be skilled in this area.

But not only C++
Passenger serves Ruby, Python and Node.js web apps, so knowledge about these ecosystems is a plus. We are experimenting with other technologies such as Go, React and Kubernetes. Come join us if you have a curious mind and enjoy learning new things.

Let your voice be heard
Love blogging about your work and technology? Like speaking at meetups and conferences? We’ll provide you with all the opportunities you need to get yourself out there.

Remote work and communication
With both onsite and remote Phusioneers on the Passenger team good communication skills are vital. We like to meet up regularly at the Amsterdam office and on Skype.

The ideal candidate also has:

  • A good command of the English language (any other language is a bonus).
  • Their own initiative to work without explicit instruction.
  • Affinity with blogging, marketing and writing.
  • Experience with Passenger.

What does Phusion have to offer you?

  • Lunch, drinks and snacks when you’re in the office,
  • Flexible work hours and locations,
  • Travel allowance for day-to-day and conference travel,
  • Relaxed and fun company culture - karaoke and games included.

See our Careers Page for the full breakdown or swing by the office to see what we’re really like.

Sound like you?

Send us a ping at jobs@phusion.nl or come and meet us at our Amsterdam office! We’ve got a bunch of C++, Ruby, Java, and .NET gurus on board that you can spar with. You know, if you ever got tired of just C++.

2 months ago

Ruby on Rails News - Jul 22

New releases, bugfixes and more!

Hello everyone! This is Greg with the latest news from the Rails world. 2 months ago

Hello everyone! This is Greg with the latest news from the Rails world.

Rails 5.1.3.rc1 and 5.0.5.rc1 released

Two new release candidates has been released this week, if there are no regressions found, the final releases are coming next week!

This Week’s Rails contributors!

28 people helped to make Rails better this week. If you want to be one of them, checkout the issues list, help is always welcomed!

Add bootsnap to default Gemfile

The bootsnap gem helps to boot a Rails application faster, and the gem is now part of the Rails default Gemfile.

Allow to pass a connection to the dbconsole command

With this change the dbconsole command can except a connection parameter, so if you are using a 3 level database connection configuration you can specify the connection you want to use.

Fix where with a custom table name

With this week the select clause will use the custom table name if you have a table alias set up.

Scrub the invalid parameter value before using it in the error

When Rack::Utils::InvalidParameterError is raised the exception message now scrubs the parameter value to make it possible to use it in error messages.

Make rails yarn:install ignore dev dependencies

With this change rails yarn:install won’t install the development dependencies, so in deployment when the assets are precompiled they are ignored. bin/yarn still installs everything in your development environment.

That’s all for this week, as always, we couldn’t cover all of the changes, but feel free to check the commits if you are interested. Until next week!

2 months ago

Phusion News - Jul 20

Passenger 5.1.6: new packages for Zesty, Debian Stretch, Nginx

Version 5.1.6 of the Passenger application server for Ruby, Node.js, Meteor and Python has been released. It features updated packages to cover an Nginx security issue. We also supply a dynamic version of the Passenger Nginx module through APT packages where possible, which is currently in the

2 months ago
Passenger 5.1.6: new packages for Zesty, Debian Stretch, Nginx

Version 5.1.6 of the Passenger application server for Ruby, Node.js, Meteor and Python has been released. It features updated packages to cover an Nginx security issue. We also supply a dynamic version of the Passenger Nginx module through APT packages where possible, which is currently in the new Debian Stretch packages, as well as in replacement Ubuntu Zesty packages. The release also incorporates a few improvements and fixes, such as graceful shutdown for Passenger Standalone with the Nginx engine.

The 5.1.x series of Passenger brings a plethora of improvements in uptime maximization, security and efficiency. Please be aware that you can enjoy enterprise features and sponsor the open source development directly by buying Phusion Passenger Enterprise.

Ubuntu 17.04 "Zesty": replaced Nginx packages

We've been busy enhancing our APT packaging system to take advantage of the fact that Nginx supports dynamic modules. This enables us to support distribution updates faster in the future, because we no longer have to supply what amounted to a Passenger-enabled copy of the distribution's Nginx package.

The Nginx included in Ubuntu Zesty supports dynamic modules, but unfortunately the packaging support wasn't ready at the time Zesty was released. We've yanked the static module based Passenger package (nginx-extras), and introduced libnginx-mod-http-passenger. Users of the Nginx integration mode can use the following commands to switch to the new dynamic module based integration (and the system Nginx):

sudo apt-get remove nginx-extras  
# or if that fails: sudo dpkg --remove --force-remove-reinstreq nginx-extras
sudo apt-get update  
sudo apt-get install libnginx-mod-http-passenger nginx  

Packages for Debian 9 "Stretch"

We've got packages out for Debian Stretch (GH-1960)! The Passenger / Nginx integration is provided via our new dynamic Nginx module package. We've updated our documentation with installation instructions.

Nginx CVE-2017-7529

An integer overflow vulnerability was discovered in the Nginx range filter module (CVE-2017-7529). We've taken two steps to resolve this:

  • The Passenger source code now prefers Nginx version 1.12.1 (previously 1.10.3), in which the issue is fixed. The preferred version is used by Passenger Standalone + Nginx engine, Passenger RPM packages, and passenger-install-nginx-module.

  • The Passenger APT packages are pinned to Nginx 1.10.3 because the Debian configuration for Nginx includes the lua module, which doesn't have a release yet that is compatible with 1.12.x. In this case we've applied the patch to our Nginx package.

Graceful shutdown (Standalone / Nginx)

Passenger Standalone uses either Nginx or Phusion's builtin engine under the hood. PikachuEXE contributed an improvement (PR-1956) that tells the Nginx engine to shutdown gracefully when Passenger Standalone is stopping.

Fixed memory issue (Standalone / builtin)

The previous Passenger version (5.1.5) featured a major internal refactoring of settings handling under the hood to prepare for supporting settings change without restart. We discovered a refactoring error that lead to a memory corruption issue when running with the builtin engine. This has now been fixed.

Various fixes

  • Fixes a typo that causes a looping crash when long security update information is sent by the server. In practice we will keep the messages shorter to avoid triggering this until there has been ample time to upgrade.
  • Fixes unnecessary process respawn if process was detached while min_instances is set to 0. Closes GH-1735.
  • Fixes WSGI crash with Python 3 and non-ASCII characters in headers or the URL. Closes GH-1935. Thanks to n4nn31355 for the assistance.
  • [Standalone] Cleanup the temp dir before aborting when startup cannot continue, e.g. when Passenger is already running. Closes GH-1953.
  • Adds support for building with MacPorts' OpenSSL. Closes GH-1959.

Installing 5.1.6

Please see the installation guide.

Upgrading to 5.1.6

We strongly advise staying up to date with the latest version.

See also the upgrade notes below!

Passenger 5.1.6: new packages for Zesty, Debian Stretch, Nginx
OS X
Passenger 5.1.6: new packages for Zesty, Debian Stretch, Nginx
Debian
Passenger 5.1.6: new packages for Zesty, Debian Stretch, Nginx
Ubuntu
Passenger 5.1.6: new packages for Zesty, Debian Stretch, Nginx
Heroku
Passenger 5.1.6: new packages for Zesty, Debian Stretch, Nginx
Red Hat
Passenger 5.1.6: new packages for Zesty, Debian Stretch, Nginx
CentOS
Passenger 5.1.6: new packages for Zesty, Debian Stretch, Nginx
Ruby gem
Passenger 5.1.6: new packages for Zesty, Debian Stretch, Nginx
Tarball
Passenger 5.1.6: new packages for Zesty, Debian Stretch, Nginx
Docker

If you are upgrading from 4.x, please read the 5.0 upgrade notes to learn about potential upgrade caveats.

Download issue with old gem version

Old versions of gem (below 2.2.0, released in 2013) may fail to download the Passenger Enterprise gem from our rubygem hosting software (Gem in a box).

ERROR: Could not find a valid gem 'passenger-enterprise-server' (= 5.1.4), here is why:  
 Unable to download data from https://..@www.phusionpassenger.com/enterprise_gems/
 - bad response Unauthorized 401 

If this happens, please upgrade to a newer version of gem:

gem install rubygems-update; update_rubygems  

Special notes about capistrano-passenger

If you are using Capistrano and capistrano-passenger, then it may fail with this error:

SSHKit::Runner::ExecuteError: Exception while executing as user@99.99.99.99: undefined method `[]' for nil:NilClass

NoMethodError: undefined method `[]' for nil:NilClass

Tasks: TOP => passenger:restart

This is due to an incompatibility in capistrano-passenger with Passenger 5.0.22 and later. Please upgrade capistrano-passenger to 0.2.0 or later.

Final

Phusion Passenger's core is open source. Please fork or watch us on Github. :)

Passenger 5.1.6: new packages for Zesty, Debian Stretch, Nginx

Passenger ensures that your Ruby, Python, Node.js and Meteor apps, microservices, and APIs are served with outstanding reliability, performance and control. For additional features and premium support, check out the enterprise edition.

2 months ago

Bundler News - Sep 08

Bundler 1.13: The one with steady improvements

Bundler 1.13 is out! It’s been a steady stream of improvements over the last four months, and we’re shipping some new features, some improved features, and some experimental features. Now that we’ve shipped all of these changes, we’re starting to work at full speed on the upcoming 1.14 and 2.0 releases. While you wait, read on for the changes in 1.13 and then give it a try!

New features Su over a year ago

Bundler 1.13 is out! It’s been a steady stream of improvements over the last four months, and we’re shipping some new features, some improved features, and some experimental features. Now that we’ve shipped all of these changes, we’re starting to work at full speed on the upcoming 1.14 and 2.0 releases. While you wait, read on for the changes in 1.13 and then give it a try!

New features

Support for required_ruby_version (with declared ruby)

One very nice addition is that gems with a required_ruby_version will now resolve correctly as long as your Gemfile contains a ruby declaration. This change is the culmination of years worth of work, including the new compact index released in Bundler 1.12. In the future, we’re also going to support gems with required Ruby versions in Gemfiles that don’t declare a Ruby requirement. Because of existing features (like the Gemfile Ruby declaration), we’re having to do some mork work so that everything can coexist harmoniously. In the meantime, set a Ruby version and you’ll get the right gem versions to install on your Ruby.

The bundle doctor command

We’ve also added a bundle doctor command, courtesy of @mistydemeo. Over time, the doctor command will try to solve common problems. Today, it is capable of detecting gems that have been compiled against libraries that no longer exist. For example, if you use Bundler to install the pg gem and then later run brew upgrade postgres, the gem will stop working. We’ve never had a good way to explain (or even detect) this kind of problem before, and now we’re able to fix it for you automatically.

Add options --add-platform and --remove-platform to the lock command

In the past, the only way to resolve your Gemfile on a new platform (like java or mswin) was to run bundle install on that platform. We’ve added explicit options to the lock command to allow managing platforms. Platforms can be added using bundle lock --add-platform NAME, and platforms can be removed using bundle lock --remove-platform NAME.

This makes it possible to (for example) develop on Windows and deploy to a Unix server. However! (and this is a pretty big however), gems on different platforms can have completely different code. Run your test suite on whatever platform you will use in production—it’s the only way to be sure.

Improved features

Auto-install for bundler/inline

When using bundler/inline, gems are now automatically installed. This makes it ridiculously easy to create and distribute single-file scripts that depend on gems. Highly recommended.

Dramatic resolver optimizations

The resolver has been fine-tuned. It allocates less objects, uses less memory, needs less GC time, and is all-around better. It is now able to find usable Gem versions noticably faster. In many cases, the improvement was about 4x. For one especially dramatic Gemfile, Bundler now runs 100x faster than it did before.

Better faster exec

The new exec command (added in v1.12) switched from always calling exec to calling load instead if possible. In version 1.13 we added a way to turn it off: bundle config exec_disable_load true. We also dramatically improved it process, adding support for JRuby, and setting process titles the same way they used to be set.

Improved usage of the compact index

We launched the compact index in v1.12. In this version, we’ve sped things up by using persistent HTTP for more than one request, fixed printing dots to indicate progress, and added support for legacy gems with capitalized names and users without a home directory.

Experimental features

This version also contains three experimental features, disabled by default: a plugin system, and version locking for Bundler itself.

Experimental plugin system

For a long time now, we’ve supported “command” plugins the same way that git does: if there is a command named bundle-foo, then Bundler will run it when you execute bundle foo. The experimental plugin system builds on top of that, providing a way to create new Bundler commands that hook into the Bundler CLI internals. The plugin system also supports “source” plugins, which means it should be possible to use gems from Subversion, Mercurial, S3, or anything else you can think of. In addition to source plugins, we’ve started adding new “lifecycle” hooks. That means plugins will be able to hook in and run their own code before, during, or after the install or update process.

Experimental Bundler version locking

Someday, Bundler 2.0 is going to break backwards compatibility. When that happens, we’re going to need a way for applications that use Bundler 1.x to keep working. We’re also going to need a way for applications that use Bundler 2.x to work in the first place. As a first step towards that glorious future, we’ve built a feature that allows Bundler to automatically run the version of Bundler locked in the Gemfile.lock. It adds an additional level of complexity, though, so we’ve disabling it by default in this version of Bundler. If you want to opt in, and have Bundler 1.13 automatically download, install, and run an older version of Bundler, here’s how it works:

First, export the environment variable BUNDLE_ENABLE_TRAMPOLINE. In the Bash shell, that means running export BUNDLE_ENABLE_TRAMPOLINE=true. Then, run bundle install and bundle exec as usual. You should notice that Bundler will automatically switch to the version of Bundler that is saved into the Gemfile.lock. To update the version of Bundler saved in the lockfile, run bundle update --bundler. That will overwrite the Bundler version in the lock with the newest version of Bundler installed on your machine.

Experimental conservative updates

bundle update received some new options to support conservative updates: --patch and --minor. “Conservative” meaning it will sort all available versions to prefer the latest patch releases from the current version, then the latest minor releases and then the latest major releases. These aren’t documented or formally supported yet while we allow the community some opportunity to weigh in on how these options should work. Join the discussion and give us your 2 cents so we can lock this in for 1.14. There’s even some outstanding issues you can contribute to!

Feedback for experimental features

These features are a really big deal, and we want to launch them at the same level of polish and stability that you’re used to getting from Bundler. We’ll get there, and when we do these features will be turned on by default. In the meantime, if you’d like to try them out, that would be awesome. We’d love to hear your feedback. <3

How To Upgrade

Run gem install bundler to upgrade to the newest version of Bundler.

over a year ago

Bundler News - May 19

Bundler 1.15: Bundle Oh So Fast

What’s new in Bundler 1.15?

Hot on the heels of the many small fixes in Bundler 1.14, we’re pushing out 1.15. The list of changes is much shorter, but we think you’re going to love it all the same, since this time around we’ve focused on making Bundler a whole heck of a lot faster.

Speed

Due to Julian Nadeau’s prompting, we’ve made loading up Bundler fast. Up to a half a second faster 4 months ago

What’s new in Bundler 1.15?

Hot on the heels of the many small fixes in Bundler 1.14, we’re pushing out 1.15. The list of changes is much shorter, but we think you’re going to love it all the same, since this time around we’ve focused on making Bundler a whole heck of a lot faster.

Speed

Due to Julian Nadeau’s prompting, we’ve made loading up Bundler fast. Up to a half a second faster than before, on every bundle exec, require "bundler/setup", Bundler.setup, and Bundler.require. This is going to save developers a lot of time, given how often we tend to run things!

The mere act of initializing a Gemfile has been sped up by turning array lookups into hash table accesses, making expensive comparisons lazy, and generally avoiding object allocation.

We also now only validate git gems when they are first downloaded & installed, meaning projects with many git gems won’t be validating each and every one of them over and over again.

Finally, we’ve managed to avoid evaluating the full .gemspec of all the gems that are being loaded when running on RubyGems 2.5 and above. Taking advantage of a feature called stub specifications, Bundler is able to grab all of the information it needs from the first two lines of a serialized gemspec file, without evaluating the rest. This represents a massive time savings for very large Gemfiles.

New Commands

We’ve added 4 new commands that have been on our wish list for a long time.

bundle info

This command prints out basic information about the given gem, and is intended to replace bundle show once Bundler 2 rolls around.

bundle issue

Have you ever been frustrated by a Bundler issue that wasn’t a crash? Have you found it difficult to figure out what information to put in a new GitHub issue? Well, no more! bundle issue will gather all of the information present in the error template, on demand.

bundle add

Bundler has long included the bundle inject command, which has been a source of some confusion. inject has always been intended to serve as plumbing for other tooling, doing a whole bunch of verification along with adding a new gem line to the Gemfile. Due to popular demand, we’ve extracted that latter part out into the bundle add command, making it easier than ever to automate adding dependencies to your Gemfile.

bundle pristine

Have you ever accidentally edited an installed gem’s files and wished you had a way to undo that? Mirroring the gem pristine command, Bundler now supports bundle pristine, restoring all of the gems in your Gemfile to pristine condition.

More Man Pages

Documentation improvements are amongst my favorite contributions, and Liz Abinate came through big for us this release. We now have man pages for every single Bundler command. This means that bundler.io will also have documentation for all of the Bundler commands. We hope to do a better job of keeping our documentation up-to-date in the future, and this release is a great starting point for that effort.

Various improvements

In addition to those larger additions, we made some smaller tweaks with the aim of smoothing and improving the overall experience of using Bundler:

  • bundle update will now print gems whose versions are regressing in yellow.
  • bundle inject has gained --source and --group options.
  • bundle config has a --parseable option, suitable for use in scripts.
  • Resolver version conflicts will only list relevant dependencies.
  • When installing a gem fails, Bundler will print out the reason why that gem was being installed in the first place.
  • Bundler will let you know when a new version of itself is available. How meta.
  • bundle update works a lot better now when only unlocking a single gem.

We also fixed over 20 separate bugs, and you can read about every single one of them in the Bundler 1.15 changelog.

How To Upgrade

Run gem install bundler to upgrade to the newest version of Bundler.

4 months ago

Bundler News - Jul 10

A New Bundler Website

Announcing… the new Bundler website! As part of Google Summer of Code 2016, Bundler has a new, prettier, and better website. The most visible changes are a completely new design and color scheme. In addition, the entire site is now responsive and easy to read on mobile devices using the Bootstrap framework.

The new Docs page provides a table of contents for the entire site, allowing you over a year ago

Announcing… the new Bundler website! As part of Google Summer of Code 2016, Bundler has a new, prettier, and better website. The most visible changes are a completely new design and color scheme. In addition, the entire site is now responsive and easy to read on mobile devices using the Bootstrap framework.

The new Docs page provides a table of contents for the entire site, allowing you to choose between guides, command reference pages, and changelogs for each version. On each command page (e.g. bundle install), there is a new sidebar, allowing navigation not just between commands but also to previous versions of the same command.

There are also two new guides to go with the new website: Using Bundler In Applications written by me, and Developing a RubyGem using Bundler by Ryan Bigg (@radar).

The new site also includes some more improvements:

  • Command pages are now built from the Bundler repository instead of hand-written (where possible)
  • Commits to the master branch of bundler-site are now auto-deployed (via Travis)
  • Middleman has been updated to latest version
  • Every header in the guides and commands pages now has anchor links for navigation and reference
  • The site now supports multiple translations (although no translations have been completed yet)

Many thanks to Amy (@sailorhg), André (@indirect) and Samuel (@segiddins). Without their help, it wouldn’t have been possible.

Enjoy :D

~ Jakub (@kruczjak)

over a year ago

RubyGems News - Aug 27

2.6.13 Released

RubyGems 2.6.13 includes security fixes.

To update to the latest RubyGems you can run:

gem update --system

If you need to upgrade or downgrade please follow the how to upgrade/downgrade RubyGems instructions. To install RubyGems by hand see the Download RubyGems page.

Security fixes:

  • Fix a DNS request hijacking vulnerability. Di 25 days ago

RubyGems 2.6.13 includes security fixes.

To update to the latest RubyGems you can run:

gem update --system

If you need to upgrade or downgrade please follow the how to upgrade/downgrade RubyGems instructions. To install RubyGems by hand see the Download RubyGems page.

Security fixes:

  • Fix a DNS request hijacking vulnerability. Discovered by Jonathan Claudius, fix by Samuel Giddins.
  • Fix an ANSI escape sequence vulnerability. Discovered by Yusuke Endoh, fix by Evan Phoenix.
  • Fix a DOS vulernerability in the query command. Discovered by Yusuke Endoh, fix by Samuel Giddins.
  • Fix a vulnerability in the gem installer that allowed a malicious gem to overwrite arbitrary files. Discovered by Yusuke Endoh, fix by Samuel Giddins.

As always, please report any security issues discovered in RubyGems to the RubyGems project on HackerOne.

SHA256 Checksums:

  • rubygems-2.6.13.tgz
    d041502ae77e8d49e0a436483fb91f9ad6cc1489e49e0735e7c4a7cf10e728c9
  • rubygems-2.6.13.zip
    08011f0d41b5cd2e49a134bc24183476983bfe14be4cc3a630ab21fe1d3817fd
  • rubygems-update-2.6.13.gem
    20abbf7754b82c46aacf12c831339870f4cd1ec069d256d338f1041298badda9
25 days ago

Ruby on Rails News - Aug 24

Rails 5.1.4.rc1 and 5.0.6.rc1 released

Hi everyone, 27 days ago

Hi everyone,

I am happy to announce that Rails 5.0.6.rc1 and 5.1.4.rc1 have been released.

If no regressions are found, expect the final release on Tuesday, August 29, 2017. If you find one, please open an issue on GitHub and mention me (@eileencodes) on it, so that we can fix it before the final release.

CHANGES since 5.0.5

To view the changes for each gem, please read the changelogs on GitHub:

Full listing

To see the full list of changes, check out all the commits on GitHub.

CHANGES since 5.1.3

To view the changes for each gem, please read the changelogs on GitHub:

Full listing

To see the full list of changes, check out all the commits on GitHub.

SHA-256

If you’d like to verify that your gem is the same as the one I’ve uploaded, please use these SHA-256 hashes.

Here are the checksums for 5.0.6.rc1:

$ shasum -a 256 *-5.0.6.rc1.gem
0490ac6c4621756871839ad584f0a0349a72a9ccdeac0f72dafd3539638ba5ef  actioncable-5.0.6.rc1.gem
fc7697724d884307bf2ea307c028902f71f96304b9a882418e6ec94d10202cd9  actionmailer-5.0.6.rc1.gem
b0f1f4479f61ada80b3dbe3e9ccaa0db390119918e5da632dda3c8398e6e4f5f  actionpack-5.0.6.rc1.gem
673d06523edf733163ad668fe3cd64bd1c7fb97244c952241d1e00ee6835101b  actionview-5.0.6.rc1.gem
ac6521d4df459db19fc0f2740d0e0c0a6f3102252c8124ecb25e8d33335d6cf4  activejob-5.0.6.rc1.gem
0824cd58f175a3c825dce9d42d73254d25af25d824ae1c5c3465f12bb0812f72  activemodel-5.0.6.rc1.gem
7972a8a76c711b8fc01ab52d95c4f16a73e9683e4d745a17d61ab91051df856c  activerecord-5.0.6.rc1.gem
40f0c77de7e54b6a3581272ce5b6409ae0c61b5bfad3239db46807d8342ce8a3  activesupport-5.0.6.rc1.gem
7873311d5340bffbabeb33cb9d3ce2c97056bc2bebad3abfcba6f5b38b209075  rails-5.0.6.rc1.gem
3fd4b347f19fb4ff2ec7cee4c9a45aba31d1e287583943269bc9d09bef61ca93  railties-5.0.6.rc1.gem

Here are the checksums for 5.1.4.rc1:

$ shasum -a 256 *-5.1.4.rc1.gem
6ebb05e31a5d46379f638092742aa1543ab3522302a62351de9e5dc746fc7c77  actioncable-5.1.4.rc1.gem
fb3e3743a29a70524c64caa656056f7cf0085998a1438b28325c6e10a6330efd  actionmailer-5.1.4.rc1.gem
c4b39e9b721a4b2eb37be9f18bfbc0a479b61ae4d6b536b1b9f2fc06f83f6ad8  actionpack-5.1.4.rc1.gem
9930cccacbe71085b894ca0410da07625b801c4db1775b655357bd2bf5824ae9  actionview-5.1.4.rc1.gem
e0c7610f4fe20c778e5f9739f80ae4d5d3450bbacff49d24064b0b3b048f9dd6  activejob-5.1.4.rc1.gem
11dae082bd1dfea9541a60501135bef6c32d792407dea57250dc95ba5e415a77  activemodel-5.1.4.rc1.gem
3b058a80c8f14c324dad4c185825a4ce4c4f853af37002bec92e179bef583fcb  activerecord-5.1.4.rc1.gem
c9984249c0200e9c1f462779294e0cec6bb6c8b95421dc01b579a0efa2db6561  activesupport-5.1.4.rc1.gem
c8134e1efcc5f17ac28927a76423146f3a7baf618d97a5d752d09edf4c5eeb7c  rails-5.1.4.rc1.gem
7589a79f6b4a4de73d2d427193eb9beacd1628530958dd4d8f9404531748a973  railties-5.1.4.rc1.gem

As always, huge thanks to the many contributors who helped with this release!

27 days ago

Ruby on Rails News - Aug 19

Better docs, better performance, better Rails!

Hello everyone! This is Claudio with a recap of the main commits that made it into rails/rails this week. If you too want to contribute to Rails, this outstanding Active Record issue is a great place to start. 1 months ago

Hello everyone! This is Claudio with a recap of the main commits that made it into rails/rails this week. If you too want to contribute to Rails, this outstanding Active Record issue is a great place to start.

Temporarily point to a fork of SDoc

A work in progress to improve the documentation of Rails with a nicer theme, better SEO and faster generation time. Can you spot the difference between the current and the future version?

Minor tweaks in Active Storage documentation

Two weeks ago, Active Storage made it into rails/rails. This week its documentation has been improved to make it ready to ship with Rails 5.2.

Faster and more readable implementation of Hash#deep_merge

If you want to learn how to use benchmarks to prove that a commit can improve the performance of Rails, this is a great example.

Eager-load controller actions to reduce response time of the first request

The list of available actions for a controller is now eagerly loaded  to reduce response time of the first request and the memory footprint when running on forking server like Unicorn.

Load Parameters configurations on :action_controller only once

This PR fixes a regression introduced in 5.1.3 by which UnpermittedParameters were not raised as expected.

Check :scope input in Uniqueness validator

Without this patch, calling something like validates_uniqueness_of :code, scope: [archived: false] would cause NoMethodError with a trace into AR internals.

Add binary helper method to fixtures

You can now more easily use binary data as fixtures.

Add --skip-yarn option to the plugin generator

Don’t include yarn in your engines if you don’t need it.

Allow serialize with a custom coder on json and array columns

Better control on how to store your data.

Bump thor and blade

Thor 0.20 has new features you might want to look at.

That’s all for this week! Feel free to check the full list of commits if you are interested. Until next week!

1 months ago

JetBrains RubyMine News - Aug 09

RubyMine 2017.2.2 EAP: Speeding Things Up

Hi everyone, RubyMine 2017.2.2 EAP has been released introducing a series of performance improvements and a number of bug-fixes. The Hunt for Performance This EAP contains the first part of major performance updates that will take full effect in v2017.3 (to be … Continue reading → 1 months ago

Hi everyone,

RubyMine 2017.2.2 EAP has been released introducing a series of performance improvements and a number of bug-fixes.

The Hunt for Performance

This EAP contains the first part of major performance updates that will take full effect in v2017.3 (to be released in fall 2017).

For this EAP, we have fixed internal bugs affecting the speed of code completion, inspections, and the overall responsiveness of the IDE.

As a quick-and-dirty test we have analyzed Discourse and TracksApp, the two well known open source Rails apps, for existing errors and code smells with RubyMine (Code | Inspect Code), and compared it against the same analysis in the current stable v2017.2.1. The results varied across the team, but generally showed a 50%-100% increase in speed of code analysis when inspecting the whole project.

We encourage you to try and check the same for your applications and let us know how it works out. Note that the changes we made have most likely affected RubyMine in many ways, so please report any issues you face to our bug tracker, or contact our support team.

Other improvements

As usual, we’ve fixed a number of bugs in this update:

Download this Early Access Program build from Confluence.

See the release notes for the full list of improvements, and please report your issues to the tracker.

Cheers!

Your RubyMine team

1 months ago

Phusion News - Aug 01

Passenger 5.1.7: Enterprise usage reporting improvements

Version 5.1.7 of the Passenger application server for Ruby, Node.js, Meteor and Python has been released. It features improved reliability and improved system CA path detection for enterprise usage data recording. As well as improved compilation robustness and various improvements to the included json library.

The 5.

2 months ago
Passenger 5.1.7: Enterprise usage reporting improvements

Version 5.1.7 of the Passenger application server for Ruby, Node.js, Meteor and Python has been released. It features improved reliability and improved system CA path detection for enterprise usage data recording. As well as improved compilation robustness and various improvements to the included json library.

The 5.1.x series of Passenger brings a plethora of improvements in uptime maximization, security and efficiency. Please be aware that you can enjoy enterprise features and sponsor the open source development directly by buying Phusion Passenger Enterprise.

Improves reliability of usage data recording (Enterprise)

Fixes a potential use-after-free bug when reporting usage data to the Phusion licensing server, and reduces the time spent with open file handles to improve robustness against data-corruption.

System CA path robustness improved (Enterprise)

Fixes an SSL certificate issue in the license usage data reporter, which only occurs when Passenger Enterprise is installed from a gem or tarball. The license usage data reporter now searches for the correct system CA path, rather than rely on a single path.

Various fixes

  • Fixes compilation problems on some systems.
  • Upgrades the JSON parser (json-cpp) to version 1.8.1. This makes parsing slightly faster, adds various security checks and fixes some JSON generation issues.

Installing 5.1.7

Please see the installation guide.

Upgrading to 5.1.7

We strongly advise staying up to date with the latest version.

See also the upgrade notes below!

Passenger 5.1.7: Enterprise usage reporting improvements
OS X
Passenger 5.1.7: Enterprise usage reporting improvements
Debian
Passenger 5.1.7: Enterprise usage reporting improvements
Ubuntu
Passenger 5.1.7: Enterprise usage reporting improvements
Heroku
Passenger 5.1.7: Enterprise usage reporting improvements
Red Hat
Passenger 5.1.7: Enterprise usage reporting improvements
CentOS
Passenger 5.1.7: Enterprise usage reporting improvements
Ruby gem
Passenger 5.1.7: Enterprise usage reporting improvements
Tarball
Passenger 5.1.7: Enterprise usage reporting improvements
Docker

If you are upgrading from 4.x, please read the 5.0 upgrade notes to learn about potential upgrade caveats.

Download issue with old gem version

Old versions of gem (below 2.2.0, released in 2013) may fail to download the Passenger Enterprise gem from our rubygem hosting software (Gem in a box).

ERROR: Could not find a valid gem 'passenger-enterprise-server' (= 5.1.4), here is why:  
 Unable to download data from https://..@www.phusionpassenger.com/enterprise_gems/
 - bad response Unauthorized 401 

If this happens, please upgrade to a newer version of gem:

gem install rubygems-update; update_rubygems  

Special notes about capistrano-passenger

If you are using Capistrano and capistrano-passenger, then it may fail with this error:

SSHKit::Runner::ExecuteError: Exception while executing as user@99.99.99.99: undefined method `[]' for nil:NilClass

NoMethodError: undefined method `[]' for nil:NilClass

Tasks: TOP => passenger:restart

This is due to an incompatibility in capistrano-passenger with Passenger 5.0.22 and later. Please upgrade capistrano-passenger to 0.2.0 or later.

Final

Phusion Passenger's core is open source. Please fork or watch us on Github. :)

Passenger 5.1.7: Enterprise usage reporting improvements

Passenger ensures that your Ruby, Python, Node.js and Meteor apps, microservices, and APIs are served with outstanding reliability, performance and control. For additional features and premium support, check out the enterprise edition.

2 months ago

Ruby on Rails News - Jul 30

New releases, bugfixes and more than 30000 issues/PRs!

Hello everyone! This is Prathamesh with the latest news from the Rails world. 2 months ago

Hello everyone! This is Prathamesh with the latest news from the Rails world.

Rails 5.1.3.rc2 and 5.0.5.rc2 released

Two new release candidates has been released this week, if there are no regressions found, the final releases are coming next week! We said it last week as well 😁

This Week’s Rails contributors!

27 people helped to make Rails better this week with 7 of them for the first time! If you want to be one of them, checkout the issues list, help is always welcomed!

Rails crosses 30000 issues/PRs on GitHub

As of this writing the count is increased to 30004. 28805 of all of these issues and PRs have been processed already! That’s pretty awesome 🎉

Let Arel manage the bind params

Active Record no longer manages the bind parameters required for queries. Now Arel handles it on it’s own and returns the AST and bind params together. 

Add missing support for modulo operations on durations

Rails 5.1 introduced ActiveSupport::Duration::Scalar class as a wrapper around a numeric value as a way of ensuring a duration was the outcome of an expression. However the implementation was missing support for modulo operations. This is now fixed.

Fix division where the denominator is duration

This fixes a regression where result of division by duration was not returning Numeric result. It is now restored to the previous behavior of Rails 5.1.1 and prior.

That’s all for this week, as always, we couldn’t cover all of the changes, but feel free to check the commits if you are interested. Until next week!

2 months ago

Ruby on Rails News - Jul 25

Rails 5.0.5.rc2 and 5.1.3.rc2 have been released

Hi everyone, 2 months ago

Hi everyone,

I am happy to announce that Rails 5.0.5.rc2 and 5.1.3.rc2 have been released.

If no regressions are found, expect the final release on Monday, July 31, 2017. If you find one, please open an issue on GitHub and mention me (@kaspth) on it, so that we can fix it before the final release.

CHANGES since 5.0.4

To view the changes for each gem, please read the changelogs on GitHub:

Full listing

To see the full list of changes, check out all the commits on GitHub.

CHANGES since 5.1.2

To view the changes for each gem, please read the changelogs on GitHub:

Full listing

To see the full list of changes, check out all the commits on GitHub.

SHA-256

If you’d like to verify that your gem is the same as the one I’ve uploaded, please use these SHA-256 hashes.

Here are the checksums for 5.0.5.rc2:

$ shasum -a 256 *-5.0.5.rc2.gem
dfcbee8aca863312a170b1075d9a740cfaf60c68d9a4351e23d2783dd63450a1  actioncable-5.0.5.rc2.gem
c2f6615b14485b4c7b5a9b37712087cd90af5fd3ad0fec470ff3c08660dcfce2  actionmailer-5.0.5.rc2.gem
650abc83a3e475169ae8c52b366bb73f358533b0611f53bec102ff3676a94855  actionpack-5.0.5.rc2.gem
fd83b598a5e1a76d379f373bd6788e238517f01a1589e99295f5fa67be9e24b0  actionview-5.0.5.rc2.gem
0ec63149a7f9d8316e37337a151700d34db07b6cf3b326548e54370db2a15779  activejob-5.0.5.rc2.gem
31a3248f20cd0c8c466e68c50bace354dad56033412d6404c2cfd27aad892bac  activemodel-5.0.5.rc2.gem
c558ce4d2011a5729d647cc83d19878745a4d1472a2b526f8ba1b54efd4eda98  activerecord-5.0.5.rc2.gem
73d8d516919c22d27f4d16a241cf7e41ddd152c23d2a6317a62e032ae064b36d  activesupport-5.0.5.rc2.gem
35792281ba2c7af605f2b17453856dd6ee64649d94545e8501ec91db111a6451  rails-5.0.5.rc2.gem
46111198cde865ba3512a828342fe35810671661fbc58b3f8ae5c749e1372239  railties-5.0.5.rc2.gem

Here are the checksums for 5.1.3.rc2:

$ shasum -a 256 *-5.1.3.rc2.gem
f2a510b5f274e7cdb9f18dbab316fe1fa703ba91af5e031fe807355633728b3b  actioncable-5.1.3.rc2.gem
303c71c3f8d792f07523fb7bb3afb366dd46293fdccfccaf8491f2db00dc93aa  actionmailer-5.1.3.rc2.gem
d86ac0ffd0dc12cde3ce332b8e4be53b16a8b7b3591c76c75657d114fa26a6fb  actionpack-5.1.3.rc2.gem
f6666a49474da4261c0bc00e9301e46075fe2c6453cf96033f5f3fa05397ceb5  actionview-5.1.3.rc2.gem
61d969886d73f1bf16a06c268dabdc890cc68c7c67c531743e81573e3f3acadd  activejob-5.1.3.rc2.gem
051f8d9fe6811bc8c3be0fc4630db8c740f5d57e3f3a605ca43e02a4790559f8  activemodel-5.1.3.rc2.gem
9e5671a03f0f6f7c3d1eea4c3320e2ae2c9e614add1d2c086e6ee3efcff56cda  activerecord-5.1.3.rc2.gem
7f953d0e72f934fc6c7b1a2dfd4f2e2c96910b3891c550a8fed682ee8c303722  activesupport-5.1.3.rc2.gem
d7ea7b6ee2ad1881f44bec83af5183dad6a52fed6ba7d25430bdab5f2394d067  rails-5.1.3.rc2.gem
2a95a264a470d65b6aa109ddbfcc451f6cd7c1235cbde9c458c19168773d432d  railties-5.1.3.rc2.gem

As always, huge thanks to the many contributors who helped with this release.

2 months ago

Ruby Lang News - Jul 21

Nominations now being accepted for Ruby Prize 2017

We are very pleased to announce you that Ruby Prize will be held this year!

The Ruby Prize is given to recognize the efforts of remarkable activities and achievements in the Ruby Community. The prize will be awarded by the executive committee comprised of three parties, the Ruby Association, Nihon Ruby no Kai and Matsue City.

The Ruby Prize winner and final nominee (1-2 people) w 2 months ago

We are very pleased to announce you that Ruby Prize will be held this year!

The Ruby Prize is given to recognize the efforts of remarkable activities and achievements in the Ruby Community. The prize will be awarded by the executive committee comprised of three parties, the Ruby Association, Nihon Ruby no Kai and Matsue City.

The Ruby Prize winner and final nominee (1-2 people) will receive an award at the RubyWorld Conference 2017, to be held in Matsue, Japan on November 1st & 2nd.

In addition, the Ruby Prize winner will also be awarded 1 million yen. Yay!

Nominees will be selected by the following:

  • Recommendations from the “Prize Member” executive committee
  • Recommendations from the general public (you).

Please see below for more details.

Nominations now being accepted for Ruby Prize 2017

Posted by Ruby Association on 21 Jul 2017

2 months ago

Ruby on Rails News - Jul 19

Rails 5.1.3.rc1 and 5.0.5.rc1 released

Hi everyone, 2 months ago

Hi everyone,

I am happy to announce that Rails 5.1.3.rc1 and 5.0.5.rc1 have been released.

If no regressions are found, expect the final releases Monday, July 24, 2017. If you find one, please open an issue on GitHub and mention me (@kaspth) on it, so that we can fix it before the final release.

CHANGES since 5.1.2

To view the changes for each gem, please read the changelogs on GitHub:

Full listing

To see the full list of changes, check out all the commits on GitHub.

SHA-256

If you’d like to verify that your gem is the same as the one I’ve uploaded, please use these SHA-256 hashes.

Here are the checksums for 5.1.3.rc1:

$ shasum -a 256 *-5.1.3.rc1.gem
3716fe810ac09651160af680e0622dba606eadc3532dc6100a09bc3dc46d8a79  actioncable-5.1.3.rc1.gem
9e734dcdb918f269bc027e31430648a58c205842b99c4990d19f33af41862027  actionmailer-5.1.3.rc1.gem
6f3739bea472a54a27b3982ea246028d4277580e2ff98c6343e07d95d54b29ad  actionpack-5.1.3.rc1.gem
482286af2d2146f6208e757fa29337dc73f9237c240bca753485992cf906bdb5  actionview-5.1.3.rc1.gem
2356ecbc1f1393a1577031894074d333fdc6d27e4ab9de796d2b97fff8676b8b  activejob-5.1.3.rc1.gem
f6ade74444578944fc3b8e376c4b050dda63bb7145abec4777dcb16867b42d30  activemodel-5.1.3.rc1.gem
72a886347747b61578a2aac1b34715042cb8f67fe43d8e53a2290220d08b8a3c  activerecord-5.1.3.rc1.gem
9220885a9d919430fa08cf72baf922000f7c36266d8f711498b7a6fb711eab2d  activesupport-5.1.3.rc1.gem
a06eded7f5e2bf1d6ecc69589062966bb701ccb8896d5aac5a6171ff38d037d4  rails-5.1.3.rc1.gem
727e65bc8c8fd359997bd1442c152f8628ddc318f68c9fba1ca603dda2db7766  railties-5.1.3.rc1.gem

CHANGES since 5.0.4

To view the changes for each gem, please read the changelogs on GitHub:

Full listing

To see the full list of changes, check out all the commits on GitHub.

SHA-256

If you’d like to verify that your gem is the same as the one I’ve uploaded, please use these SHA-256 hashes.

Here are the checksums for 5.0.5.rc1:

$ shasum -a 256 *-5.0.5.rc1.gem
71ae996b0cbadc4836d8de61058870fe3d7ae275c5a3d345b851ca8b88e7c5a7  actioncable-5.0.5.rc1.gem
58fe87b9daf4dc1ddc89110e83846c0e0939fc97c8463e789785d28eddd34ee1  actionmailer-5.0.5.rc1.gem
123d468dcb3e523d1fb82367ebec2d630c6b625d1ad3d1b635bfc718c5d94624  actionpack-5.0.5.rc1.gem
117d39ee700e82903a3f0c3c242e986326acd08e7bab1059fd0afc6e58a2d19c  actionview-5.0.5.rc1.gem
99c51db0728e139a7833af9785323c967cbd474b3f9f1d20f5802628c33398f4  activejob-5.0.5.rc1.gem
9f81997461c252608451c61f5121754fb8aa36f30a1f9f6167a77826cae76be1  activemodel-5.0.5.rc1.gem
9cef200cd17925cd22055d6c5b2d2f22514f434f98983bcba0484e472f208211  activerecord-5.0.5.rc1.gem
ca8be3d1ee126f0e0b84cb9c932771cd718a524c60f2a63dccd32c33831aff74  activesupport-5.0.5.rc1.gem
0fd92b43895a1a73d639b93eec67159bed1003ce2a3f6250030b05091ae40046  rails-5.0.5.rc1.gem
3516bc7c5d3337fe5134ac0a7ec60337078817b569a56381a4f3fe737ef04546  railties-5.0.5.rc1.gem

As always, huge thanks to the many contributors who helped with this release.

2 months ago
pluto.models/1.4.0, feed.parser/1.0.0, feed.filter/1.1.1 - Ruby/2.0.0 (2014-11-13/x86_64-linux) on Rails/4.2.0 (production)