Skip to main content

Ruby get file extension from string

Ruby Get File Extension from String

Sometimes developer requires to extract only file extension from the string object. File class can be used to perform this operation. We will see how to use File class to get the extension name.

Let's create a sample string with Filename. Suppose we have a file with name "ruby-in-rails-logo.jpg" and string object as,

filename = "ruby-in-rails-logo.jpg"

of which extension ".jpg" we want for some check in the program. Then we can use File class as follows,
Solution

Use method File.extname as follows,
Syntax:

file_extension = File.extname(filename)
=> ".jpg"

Method File#extname when passed string with filename then it returns extension of that file. In above example it is .jpg
You can read source page of File#extname on APIDock for the C source code of this method.
Sample Conversions

File.extname("ruby/in/rails/logo.jpg")
=> ".jpg"

File.extname("ruby-in-rails-logo")
=> ""
# as there is no extension in the string passed as filename

File.extname(".ruby-in-rails-logo")
""
# As not valid extension length, refer APIDock source for more on this.


What Not to do

Sometimes, idea may come to mind to extract filename from the string yourself using split method as follows,

filename = "ruby-in-rails-logo.jpg"
extension = filename.split(".").last
=> "jpg"

Which will return result as "jpg" for you which is also the required result for your program. But the C level implementation for the File#extname is more suitable considering performance. Thus, using File#extname is advised.

Comments

Popular posts from this blog

Gem::LoadError (Specified 'mysql2' for database adapter, but the gem is not loaded. Add `gem 'mysql2'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord).?

Gem::LoadError (Specified 'mysql2' for database adapter, but the gem is not loaded. Add `gem 'mysql2'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord).) In rails?


1)change the gemfile in mysql version
 gem 'mysql2'

2)Change to mysql2 version
 gem 'mysql2','0.3.20'

Active Scaffold : Add radio buttons to your form ruby on rails ?

Active Scaffold : Add radio buttons to your form ruby on rails ?

The way to add radio buttons to your active scaffold create/update from is as shown below

#Controller

class UsersController < ApplicationController
active_scaffold :user do |config|
config.label = “Users”
config.columns = [:name, :gender]
config.columns[:gender].form_ui = :radio
config.columns[:gender].options[:options] = [['Male', '1'], ['Female','2']]
end
end

Get the Current url in ruby on rails

request.refererrequest.fullpathrequest.fullpath.split("?")[0]request.referer or request.env['HTTP_REFERER'] your controller to get the referer url. 

--------------------
request.original_url
request.url
request.host_with_port
<link rel="canonical" href="<%= request.url %>" />
<%=request.path%>
How can I get the current absolute URL in my Ruby on Rails view?
The request.request_uri only returns the relative URL.
request.env['REQUEST_URI']

 For Rails 3.2 or Rails 4 you should use request.original_url to get the current URL. More detail.

For Rails 3: You want "#{request.protocol}#{request.host_with_port}#{request.fullpath}", since request.url is now deprecated.

For Rails 2: You want request.url instead of request.request_uri. This combines the protocol (usually http://) with the host, and request_uri to give you the full address