Skip to content

Conversation

@anitagraham
Copy link
Contributor

@anitagraham anitagraham commented Jul 18, 2022

This PR and its matching PR refinery/refinerycms-i18n#104 allow refinerycms to run with Ruby 3 / Ruby 4.

It has been tested with Ruby 3.2 through 4.0, and with Rails 6.1 through 8.1.

We've removed coffee-rails as a dependency and converted those to JS.

Ruby 3.1.2
core: TranslationHelper, SiteBarHelper - using Ruby3 keyword args
      lib/refinery/engine uses new mobility configuration
images, resources: Updated examples to pass an explicit block to 'expect' as passing an implicit block is deprecated.
images: Use errors.add to add errors to an object - had already been done for resources.

Gem versions changed:
  mobility 1.2.9
  rspec-rails 6.0.0.rc1
  friendly_id >= 5.4.0
  friendly_id-mobility ~> 1.0.3
@anitagraham
Copy link
Contributor Author

Tests failing:

I have seen some of these errors during testing, but thought I was past them. Many seem to be timeouts, and then the reporting of timeouts seems to be a problem too.

There are many variations of:

 1.1) Failure/Error: **visit refinery.admin_images_path**
          RuntimeError:
            Rack application timed out during boot
          # ./core/spec/system/refinery/admin/xhr_paging_spec.rb:19:in `block (3 levels) in <module:Refinery>'

and I saw some other reporting of timeouts on visit, as a result of changes to bundler, I think.

Also frequently seen (below), which seems to be an error reporting timeouts. It occurs every minute during a run.

{"time":"2022-07-18T05:05:32+00:00",
 "severity":"warn",
 "class":"Async::Task",
 "oid":130980,
 "pid":2890,
 "subject":
    "#<Async::Task:0x000000000001ffa4 /home/runner/work/refinerycms/refinerycms/vendor/bundle/ruby/3.1.0/gems/async-2.0.3/lib/async/task.rb:82:in
    `backtrace' (failed)>",
    "message":[
      "Task may have ended with unhandled exception.",
      "undefined method `logger' for Async:Module
					Async.logger.debug (self) {\"Running server...\"}
					     ^^^^^^^"
					     ],
		"error":{
		  "kind":"NoMethodError",
		  "message":"undefined method `logger' for Async:Module
					Async.logger.debug (self) {\"Running server...\"}
					     ^^^^^^^",
     "stack":
      "/home/runner/work/refinerycms/refinerycms/vendor/bundle/ruby/3.1.0/gems/falcon-capybara-1.5.1/lib/falcon/capybara/wrapper.rb:61:in `block in call'
        /home/runner/work/refinerycms/refinerycms/vendor/bundle/ruby/3.1.0/gems/async-2.0.3/lib/async/task.rb:255:in `block in schedule'
    "}
}

Tidy up configuration block for Mobility 1.2.9
Revert some changes for single argument keyword args
Add descriptions for Generator spec matchers (thereby avoiding a very long message when there are no descriptions).
@parndt
Copy link
Member

parndt commented Nov 14, 2022

Thank you for looking at this

@pdornfel
Copy link

Is there any update on the status of this PR? I need to upgrade to ruby 3.2.1 and rails 6.x because I need to upgrade to the newest cflinux4 buildpack and no previous versions of ruby are supported. I currently use refinerycms with ruby 2.5.5 and rails 5.x.

I think this merge will help me upgrade to the versions of ruby and rails mentioned above. Thank you.

@Matho Matho mentioned this pull request May 19, 2023
@parndt
Copy link
Member

parndt commented May 22, 2023

@pdornfel I'd really love to merge this but CI isn't happy. The corresponding PR for refinerycms-i18n is failing on Ruby 3.0 and 3.2, but not 3.1 🤔 refinery/refinerycms-i18n#104

Any help you or anyone else can lend with figuring out why this is happening would be greatly appreciated. Right now, I suspect the routing-filter gem we use.

…isting file spec/support/capybara.rb.

remove requirement for 'webdrivers/chromedriver' as this is all handled by Selenium

consistent errors in Selenium chrome webdriver, temporarily switched to firefox.
…to target the part of the url which should change.
…was failing in Refinery::Admin tests, so now using Refinery::Pages(*)
…e options hash, as options[:original_options]
return ImageObjects from Refinery::Admin::ImagesController#index action
unify code for grid_view and list_view into _image.html.erb
add view_objects directory to engine autoload_path
 change 0px to unitless 0.
@parndt parndt force-pushed the ruby3 branch 10 times, most recently from 99870b2 to 07c19b4 Compare January 2, 2026 01:52
Try to support the older versions
@parndt parndt force-pushed the ruby3 branch 2 times, most recently from 9b2ce58 to 6077c43 Compare January 2, 2026 08:20
@parndt parndt changed the title Add support for Ruby 3.x and 4 Add support for Ruby 3.x -> 4.0, Rails 6.1 -> 8.1 Jan 2, 2026
@parndt
Copy link
Member

parndt commented Jan 2, 2026

Thanks so much for all your hard work on this, it's been extremely helpful.

Copy link
Member

@parndt parndt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Amazing that we got here.

parndt pushed a commit to refinery/refinerycms-i18n that referenced this pull request Jan 2, 2026
Updates refinerycms-i18n to Ruby 3, to match refinery/refinerycms#3518.

Using Mobility 1.3.x

Apart from that most changes are extremely minor.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants