Chris Oliver

Joined

292,970 Experience
93 Lessons Completed
295 Questions Solved

Activity

Posted in Migrate away from Mandrill?

Hey Mel! Just recorded this and wanted to share it with ya so you could watch it before I officially publish it. https://excid3.wistia.com/medias/9bst8e6py7

Let me know if this helps! I tried to explain all the aspects of SMTP and stuff to hopefully give a deeper explanation of all the things going on for it, so hopefully it makes things easier to understand!

Posted in Migrate away from Mandrill?

Hey Mel, I've got a project that I need to add Sendgrid to today, so I'm going to make a video on it for you. :)

I think one thing you ran into was that there are a couple ways to talk to Sendgrid. One is the SMTP connection which was what I linked (and the one you'll actually want to use) but then there's the sendgrid API which is not what you want to use, but that's where the gems come from. Two separate things that are never clearly explained the differences about.

I'll be doing a video on SMTP and I'll go into depth to explain how that all works for ya.

Posted in Episodes Source Code

Unfortunately for a lot of the earlier episodes I don't have the source code anymore because they were on my old laptop. :( Anything that does have code up there right now is what I've got.

Posted in Exporting Records To CSV Discussion

What a familiar face. 👋

Good catch, I hadn't run into that but I could see that happening somehow.

Posted in Multi select form & DB search

Hey Sacha,

For those, you actually want to querying using IN so that SQL can look for matches in an array of IDs. For example:

brand_ids = [1,2,3] # These IDs may come from your form params from a multi-select
Order.where(brand_id: brands)
# SELECT "orders".* FROM "orders" WHERE "orders"."brand_id" IN (1, 2, 3)

And remember you can chain your where calls to make it cleaner:

Order.where("created_at between (?) and (?)", self.start, self.end).where(brand: self.brand,  team: self.team)

That'd do it, glad you got it fixed. 🙌

Hey Drazen,

Handful of different ways to do this. If you know which channels the user is joined to server-side, you can just loop through them and then stream_from for each channel. That will setup several redis pubsub connections so you will receive all the messages across those channels.

Posted in Refile uploading via rails console

I'm not entirely sure on that one. I imagine you could write the same value in and then save without callbacks in your seeds in order to populate but not trigger Refile to do a reupload?

Posted in Refile uploading via rails console

Ah ha! I was going to suggest that because I couldn't imagine why everything else was working just fine. Hate when things fail silently like that.

Posted in Multitenancy with the Apartment gem Discussion

You'll want to modify your authentication code to lookup the current tenant and then scope the User lookup query to only ones for that domain that way only users of that tenant can access that tenant.

Posted in Refile uploading via rails console

Are there errors on the page model after save? If you load it fresh out of the database, does the image attribute exist?

I think its mostly just not taken off due to habit. We've had position arguments and then optional hashes which are pretty much keyword arguments so it's not a big change, but it's definitely a nice one.

It's probably a good habit to start using them where they make sense from now on. I'll probably just keep forgetting to do it though. :)

Hey Earl,

What I would do is create an activity model, so you would keep track of the views, discussions, etc in a table, and then you can query for those within the last 24 hours and then count them up to determine which were the most active topics. You can query for the different types of activities and weigh some of those more than others (like comments might be more valuable than likes or something).

Does that make sense?

Here's a good article on how you could move that stuff into Postgres as a function: http://sorentwo.com/2013/12/30/let-postgres-do-the-work.html

I should definitely do a screencast on this stuff.

Posted in Searchkick search_data not working

Hey Andrew, did you get this one figured out?

I know the feeling all too well. :)

Oh I gotcha, that should be much simpler.

I believe you'll need to override the Devise Registrations controller and just define the layouts in those methods.

# config/routes.rb
devise :users, controllers: { registrations: "users/registrations" }
# app/controllers/users/registrations_controller.rb
class Users::RegistrationController < Devise::RegistrationsController
    layout "new_registration", only: [:new, :create]
    layout "edit_registration", only: [:edit, :update]
end

Something like that should do the trick.

I would actually recommend not trying to modify this because that's how Rails generally works. The thing is that your form submits a PUT request to /users when you edit your user, so when it fails, the request returns HTML and that's why your browser ends up on /users instead of /users/edit. Since it doesn't do a redirect in order to preserve all the variables, it has to keep the URL on /users in order to generate the next page that includes the errors on it.

For you to modify that, you'd be going against the way the routes work in Rails and so your solution would be kind of hacky. This does tend to feel a little weird in development when you're testing things, but when the app is live, you'll never notice it because you won't be typing in URLs direct hardly ever.

Does that make sense?

Posted in Verifying iOS in-app purchase receipts

Hey Michael,

I'm really curious about this as well. Do you know how the process of these purchase receipts work? How do you receive the receipt data? Do you get it in-app and then have to send it over to your server for verification?

Hey Jeramae,

Are you using jQuery autocomplete for the frontend? I wonder if that's having trouble on Safari or something. It isn't likely to be the server-side ElasticSearch or Searchkick stuff if it's working fine in other browsers.

Posted in What is the best way to handle omniauth

That's one of the tricky situations you have to handle with Twitter. I need to do a screencast on this, but the idea is pretty simple and here's a link to check out in the meantime: http://sourcey.com/rails-4-omniauth-using-devise-with-twitter-facebook-and-linkedin/

Basically you setup the OAuth process as normal, but if the user goes through it and doesn't return an email address, you have the add in an additional step to gather their email address and/or password.