Project

mux-rails

0.01
Low commit activity in last 3 years
A Rails Engine for integrating with Mux.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

Runtime

>= 7.0
~> 1.5
~> 5.0
 Project Readme

Mux::Rails

Gem Version Ruby

A Rails Engine for working with Mux.

Use Mux::Client to create assets and Mux::Notifications (built on the ActiveSupport::Notifications API) to handle incoming webhook requests.

Installation

Run

bundle add mux-rails

or add this line to your application's Gemfile:

gem 'mux-rails'

and run bundle install.

Then mount the engine in your routes:

# config/routes.rb
mount Mux::Engine, at: "/mux" # provide a custom path

Remember to configure the webhooks at mux.com to point to https://yourwebsite.com/mux/events.

Usage

Setup Mux tokens

# config/initializers/mux.rb
MuxRuby.configure do |config|
  config.username = ENV["MUX_TOKEN_ID"]
  config.password = ENV["MUX_TOKEN_SECRET"]
end

Creating assets

Create a Mux asset by using the Mux::Client.create_asset(url) method, passing the url to the video. The method returns a Mux asset id.

mux_asset_id = Mux::Client.create_asset("http://foo.com/bar.mp4")
# You probably want to store mux_asset_id somewhere for future reference

Deleting assets

Delete an asset using the Mux::Client.destroy_asset(asset_id) method, passing the asset id:

Mux::Client.destroy_asset("mux_asset_id")

Fetching asset

Fetch an asset using the Mux::Client.get_asset(asset_id) method, passing the asset id. This returns a JSON object:

asset = Mux::Client.get_asset("mux_asset_id")
puts asset.data.status

Handling webhook requests

Using a subscriber with a block we can listen to incoming events from Mux and do further work:

# config/initializers/mux.rb
# ...

Mux::Notifications.subscribe "video.asset.created" do |event|
  # handle asset created
  # event.id == mux_asset_id
end

Mux::Notifications.subscribe "video.asset.ready" do |event|
  # handle asset ready
  # event.id == mux_asset_id
end

Mux::Notifications.subscribe "video.asset.deleted" do |event|
  # handle asset deleted
  # event.id == mux_asset_id
end

The block is passed an event which is simply the incoming JSON (take a peek in fixtures for examples) wrapped in Mux::Event class based on Dry::Struct.

License

The gem is available as open source under the terms of the MIT License.