New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Getting "LoadError: no such file to load -- logger" when running bundler 1.5.0 against rubinius 2.2.1 #2855
Comments
Bundler 1.5.0 (being used by travis now) is broken on rbx because of how rbx handles stdlib logger: rubinius/rubinius#2855
Bundler 1.5.0 added a new dependency on Logger. You can use 1.3.5 with Rubinius 2.2.2. I'll release Rubinius 2.2.3 with new bootstrap dependencies for Bundler 1.5.0. |
Thanks for looking into this.
I don't personally use Rubinius; this was on travis, where they upgraded to bundler 1.5.0 since it just came out and the rspec rubinius builds immediately started failing. I'm not aware of a way to force travis to use an older version of bundler than what they have installed, so until this is resolved I believe everyone's rubinius builds on travis will be broken. In general, it concerns me that rubinius has taken a path that feels to me to be very fragile. Bundler choosing to use another piece of stdlib doesn't seem like something that should make it break on rubinius. It's become more and more of a burden to keep rbx builds on travis passing for the gems I maintain. Do you have plans to address this in a more holistic way or will we keep playing whack a mole with these stdlib/rubysl issues? |
Perhaps it is related to https://travis-ci.org/cielavenir/multisax/builds/16064668 |
@myronmarston I believe @brixen is working on a patch for Bundler to make it work better with the rubysl Gem & friends which should solve these issues. |
@myronmarston yes, there will be a patch to Bundler that gives it a set of gems it should not exclude. Rubinius works just fine except that Bundler removes all the gems that Rubinius has already installed. This is not specifically a fragility in Rubinius but a result of assumptions that Bundler makes. The unfortunate situation with RubyGems and Bundler being separate and partially competing projects will also hopefully be addressed in the near term. I can understand that it's frustrating to have something break when you don't know what it is or what caused it. However, much of this is a consequence of deeply flawed infrastructure in the whole Ruby ecosystem. It won't get fixed until we start fixing it. If you've ever had two gems whose secondary or tertiary dependencies conflict, you know some of the pain. It's not my intention to make it difficult to use or support Rubinius but it's also not my intention to continue sweeping these serious issues under the rug. Your patience and support while we try to improve the Ruby ecosystem is much appreciated. |
@myronmarston as you can see here https://travis-ci.org/rubinius/bundler-canary/builds/16080883 the issue involves the Curious, what's the reason for using |
@myronmarston another thing I just realized is that bundler-canary is failing with Bundler 1.3.5 with |
@myronmarston nope, I am mistaken, see https://travis-ci.org/rubinius/bundler-canary/jobs/16081410#L53 Not sure how Travis is forcing the Bundler version despite installing the gem. I'll look into that. |
@myronmarston I got all the shenanigans with Bundler and Travis worked out and have a solid repro here https://travis-ci.org/rubinius/bundler-canary/builds/16090580 so I'll hopefully be able to keep tabs on this in the future. |
I'm not convinced that rubinius taking a new path with regards to stdlib will help us address these issues. The vast majority of us still target MRI. My experience with rubinius 2.0, and particularly this choice has been nothing but pain so far:
Having multiple good implementations is important for ruby's future so I want to see rubinius succeed, but in the past few months it's been nothing but a PITA for me. I'm not the only one that feels this way. For rubinius to succeed, I think it needs the ecosystem and tooling to work well with it, but as maintainer of one well-used piece of that ecosystem (RSpec), I'm very discouraged by the amount of effort required to keep our builds green on rubinius (multiplied by each of the individual repositories...). I still don't really understand what's going on with rubysl and why there are pieces of the stdlib that that doesn't provide. Also, for this issue I thought I could solve it by installing rubysl-logger, but that didn't work and I have no idea why :(. It would be really great if you could streamline things for gem maintainers, and write up something explaining how it works so we understand how to troubleshoot issues when they arise. Right now, it feels like it's just a game of whack-a-mole. |
@myronmarston thanks for writing up your long list of complaints. We have or are working on addressing all of them. In fairness, many of them are not specifically Rubinius issues. When Travis changed the aliases for Rubinius, they delayed for a long time rolling out the new RVM support for binary installs, which would have mitigated a lot of the frustration by having a clear and simple replacement for projects testing on Rubinius. Rubinius was ready, but there wasn't anything we could do. The removal of the language modes in Rubinius was a correction of a bad choice that was only completely apparent in hind sight. The tradeoff for having to fix some broken travis builds is allowing us to devote much more attention to new features and compatibility by removing an architecture choice that was causing a great deal of complexity. The reason that racc, psych, json, minitest (at least that list for now) are not dependencies of RubySL is because they have already been separated from the MRI standard library and are separately maintained. Some people have them already listed as gem dependencies. This pile of special cases and exceptions is a huge problem for Ruby. Right now, minitest 5.x and 4.x can't be used together but the test/unit library in MRI depends on minitest 4.x. That's why we can't list rubysl-test-unit as a dependency by default. There's no mechanism in RubyGems or Bundler to allow a project author to resolve these incompatible dependencies. By making gems the single mechanism of packaging, distributing, and composing Ruby components, Rubinius and RubySL are trying to improve consistency, reliability, and maintainability of the Ruby ecosystem. It's not something everyone agrees with and there are a lot of components, like Travis, RubyGems, Bundler, RVM, other gems, etc. that Rubinius has no control over. We're trying to submit patches to RubyGems and Bundler, work with Travis and RVM, etc. Finally, to Fundamentally, there is no guarantee that your experience with any software will be pain free. I could point out the hundreds and hundreds of issues that people have had with RSpec over the years. But those issues don't detract from RSpec being perceived by some as useful software. In the end, whether you use Rubinius or not is your decision. We'll continue fixing issues and improving the technology available to people using Ruby. If you happen to have an interest in helping out, that's great. And there are a lot of avenues available to get help, like Twitter, the IRC channel, issues like this one, email. Waiting until you're frustrated by misunderstanding something isn't helping us or you. So please reach out if you need help. If you decide you're not interested, best of luck anyway. |
I'm glad to hear that.
This makes sense now that you explain it, but as far as I know there's no rubinius doc page explaining all these details about how it handles stdlib now. Currently, the burden is on gem maintainers to figure this out by trial and error.
I agree completely. I've never believed or stated otherwise.
Yep, I'm well aware of issues RSpec users have had.
I've never used rubinius and have no plans to use it in the foreseeable future. However, as maintainer of an important gem in the ruby ecosystem, it's important to the ruby ecosystem that we support rubinius...so even though you can say "having RSpec support rubinius or not is your decision", it would be unreasonable for me to choose not to. (Consider the repercussions for the community...for example: bundler's test suite uses RSpec, and it's important that bundler supports rubinius).
Given I'm not a rubinius user and don't plan to start using it anytime soon, I think my limited open source time is better spent on the projects I already work on (primarily RSpec and VCR). However, I am trying to help out in a limited capacity by reporting issues like this one, #2845 and #2846, and plan to continue to do so. One thing that would be a HUGE help to non-rubinius using gem maintainers like myself is a documentation page explaining the repercussions of the differences rubinius has compared to other implementations for both gem maintainers and gem users. (I'm thinking primarily of the rubysl issues we're discussing, but there may be other differences I haven't run into yet). It would be VERY useful to have a page explaining which parts of the stdlib are available via |
@myronmarston yes, I fully understand the need for more documentation around all these issues, I'm working on that. I've released Rubinius 2.2.3 that fixes the load error in this issue. I'm working on a more robust fix in Bundler itself. |
Thanks, @brixen. Looking forward to improved documentation :). |
Our build is broken against 2.2.1: rubinius/rubinius#2855.
Our build is broken against 2.2.1: rubinius/rubinius#2855
This is happening even though the rubysl-logger gem is installed.
The text was updated successfully, but these errors were encountered: