Giter Site home page Giter Site logo

Comments (6)

calvinfo avatar calvinfo commented on July 23, 2024

This is probably not something we'll do anytime soon, but I hear your concerns :(.

You're definitely right from a developer perspective. We should be namespaced for a namespace that we own. We're mostly trying to get uniformity across our different libraries and make installing easy for the average case. If we do get a bunch of complaints though, we'd consider dropping the top-level Analytics naming.

In the meantime, the best thing to do is fork and remove that line (which it looks like you already have). I remember a pull request wanting to do something similar by creating their own module instead: #9

from analytics-ruby.

coryschires avatar coryschires commented on July 23, 2024

+1 for adding a namespace.

It's definitely common, best practice to namespace ruby gems, especially if they use common names like Anayltics.

Taking a look at this gem, I'd suggest completely removing AnaylticsRuby (since that wrongly suggests you're profiling Ruby code) and namespace everything under SegmentIo. Then, for example, you'd have:

SegmentIo::Anayltics
SegmentIo::Client
SegmentIo::Response
# And so on ...

The public API then would be accessed under that namespace as well. For example:

SegmentIo::Anayltics.identify ...

If you're concerned with consistency, you could apply this pattern to your other libraries as well. It seems like the rationale for namespacing would apply equally to Python, PHP, etc. It would be a move in the right direction.

As far a backwards compatibility, it would a simple update for folks currently using the old API: just add the SegmentIo namespace. Or, if that's too much trouble, create an initializer with something like:

Analytics = SegmentIo::Anayltics

I totally understand this is probably not a priority. But it's obviously wrong, and I would be willing to do all the work and make a pull request.

Any chance you'd reconsider?

from analytics-ruby.

jakswa avatar jakswa commented on July 23, 2024

+1 because I just tried to add your gem to a rails app named "Analytics". I typed up more info in the dupe issue linked above. 😒

from analytics-ruby.

rustybailey avatar rustybailey commented on July 23, 2024

+1

from analytics-ruby.

calvinfo avatar calvinfo commented on July 23, 2024

hey guys, yeah, this has bothered me for a while. just got around to fixing it and updating our docs momentarily.

thanks for the patience!

from analytics-ruby.

olivierlacan avatar olivierlacan commented on July 23, 2024

Fun story. We had defined a Segment module under which a Base class and a few other subclasses were defined. When you folks changed the namespace to Segment::Analytics, all the calls to Analytics.track inside our Segment::Base were inferred as Segment::Analytics.track calls which obviously didn't work.

I spent way too much time scratching my head on this one. So while I was fully aware of the namespace change, I was still bit.

from analytics-ruby.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.