Ruby on Rails vs JavaScript: The Best Pick for 2024

Ruby On Rails vs JavaScript

Starting a web development adventure is similar to entering a world where Ruby on Rails vs JavaScript , two titans, are dancing a dynamic dance with frameworks. The strong and opinionated Ruby on Rails, dressed like a superhero with its MVC architecture, stands in one corner. Conversely, JavaScript is ubiquitous and versatile, and its various frameworks expand the web development canvas.

Explore the epic struggle between flexible innovation and structured convention. Regardless of your interest in coding, this comparison will help you explore the confusing array of features, advantages, and disadvantages to find the best framework for your upcoming digital company.

Table of Contents

  1. What is Ruby on Rails?
    1. Pros and Cons of Ruby on Rails
  2. What is JavaScript?
    1. Pros and Cons of JavaScript
  3. Ruby on Rails vs JavaScript: 13 Key differences
    1. Ruby on Rails vs JavaScript: Coding Speed
    2. Ruby on Rails vs JavaScript: Performance
    3. Ruby on Rails vs JavaScript: Documentation
    4. Ruby on Rails vs JavaScript: Learning Curve
    5. Ruby on Rails vs JavaScript: Multi-Threading support
    6. Ruby on Rails vs JavaScript: Security
    7. Ruby on Rails vs JavaScript: Application Architecture
    8. Ruby on Rails vs JavaScript: Scalability
    9. Ruby on Rails vs JavaScript: Execution
    10. Ruby on Rails vs JavaScript: Ease of testing
    11. Ruby on Rails vs JavaScript: Development Cost
    12. Ruby on Rails vs JavaScript: Cost to Hire
    13. Ruby on Rails vs JavaScript: Data Handling and Database Interactions
  4. Ruby on Rails vs JavaScript: When to use what?
    1. Use Cases of Ruby on Rails
    2. Use Cases of JavaScript
    3. Hybrid Scenario
  5. Conclusion
  6. FAQs

What is Ruby on Rails?

What is Ruby on Rails

Credits: Flickr

Ruby on Rails, or simply Rails, is a server-side framework for developing web applications written in the Ruby programming language. David Heinemeier Hansson created it and released it under the terms of the MIT Licence. Web standards like JSON or XML are used for data transport, and HTML, CSS, and JavaScript are used for the user interface. It also supports the MVC (model-view-controller) architecture, which offers a default framework for databases, web pages, and web services. It highlights the application of several well-known software engineering paradigms and patterns, such as:

Don’t Repeat Yourself (DRY): It is a software development principle that aims to minimize the recurrence of data or routines.

Convention Over Configuration (CoC): It offers multiple perspectives on accomplishing certain tasks in an online application.

Pros and Cons of Ruby on Rails

Pros and Cons of Ruby on Rails

Now let’s understand the Advantages and disadvantages of Ruby on Rails.

Quick Development

Because Ruby on Rails prioritizes convention over configuration, developers spend less time writing boilerplate code. As a result, development is accelerated, and teams are free to concentrate on business logic rather than configuration issues.

Model-View-Controller (MVC) design

Ruby on Rails utilizes the MVC design, which encourages a clear division of responsibilities. Code maintainability, scalability, and collaborative development are all improved by this modular framework.

Language Friendly to Developers

Developers benefit from an environment that is friendly to them, thanks in part to the simplicity and clarity of the Ruby programming language. Because Ruby is a beautiful and succinct programming language, developers may express complex ideas in fewer lines of code.

Active Record

Ruby on Rails simplifies database interactions by integrating the Active Record ORM. This abstraction simplifies database operations because Ruby code may be used instead of SQL queries to interact with databases.

Rich Ecosystem

Third-party libraries form a vast gem collection that benefits Rails. These gems allow developers to speed up development by leveraging pre-existing solutions. They cover many functions, such as image processing and authentication.

Enhanced Security Features

Protection against common web vulnerabilities like SQL injection and Cross-Site Scripting (XSS) is one of Ruby on Rails’s built-in security practices and features. Strong and secure web applications are made possible by the framework’s emphasis on secure coding practices.

Support and Documentation from the Community

Ruby on Rails has a thriving community that offers a wealth of resources and documentation. Because of the community-driven approach, developers are guaranteed access to a plethora of knowledge, tutorials, and solutions, which facilitates troubleshooting and keeps them up to date with best practices.

Support and Documentation from the Community

Credits: Freepik

Also read SQL Injection Prevention: 7 Tested Ways

Cons

Acquiring Process for Novice Developers

Although conventions speed up development for seasoned developers, novices may initially find it difficult to understand the conventions and magic behind the scenes. It can be difficult for people unfamiliar with the framework to learn how to do things the Rails way.

Operation

Ruby on Rails may experience performance problems, particularly when managing multiple requests simultaneously. Even with the performance improvements, there are still situations when Node.js or another framework might run better than Rails.

Issues with Scalability

In contrast to horizontal scaling, which involves adding more servers, expanding Rails applications vertically—adding more resources to a single server—may have drawbacks. Large-scale apps with quickly expanding user populations may find this concerning.

The Complexity of Asset Pipelines

Despite its strength, the asset pipeline can confuse novice users. Managing and configuring items like CSS and JavaScript could take more work.

Keeping Up With Legacy Apps

It can be difficult to update older Ruby on Rails apps to more recent versions. It could take a lot of time to update dependencies, change the code, and fix deprecated functionality.

Learning Curve for Novice Developers

The conventions and behind-the-scenes wizardry of Ruby on Rails, which speed up development for seasoned developers, might be intimidating to newcomers. For individuals unfamiliar with the Rails framework’s nuances, it may be difficult to grasp its conventions and learn the “Rails way.”

Scalability Issues

While adding extra servers to scale horizontally is a popular strategy, adding more resources to a single server to scale vertically for Rails apps might provide difficulties. Scalability problems can affect large-scale programs with quickly expanding user bases, affecting performance under high load.

What is JavaScript?

What is JavaScript

Credits: Freepik

JavaScript is a programming language that enables the implementation of intricate features on websites. You can be sure that JavaScript is used whenever a website performs any function other than merely displaying static content for viewing.

Such functions include interactive maps, scrolling video jukeboxes, animated 2D/3D graphics, and timely content updates. It is the third layer in the stack of standard web technologies.

Pros and Cons of JavaScript

Pros and Cons of JavaScript

Now, let us understand the Pros and Cons of JavaScript in detail.

Pros

Adaptability

JavaScript is a universal scripting language that can be used on serverless architecture, servers (with Node.js), and web browsers. Because of its adaptability, it is essential to full-stack development since it allows developers to utilize a single language for the whole application stack.

Adaptive Scripting

JavaScript is most recognized for its client-side scripting features, which allow websites to have interactive elements and dynamic content updates. It enables developers to work with the Document Object Model (DOM) in real time without requiring a page reload, enabling a more responsive and interesting user experience.

Also, read How to Check Server Location? A Step-By-Step Guide

Thriving Ecosystem

Many libraries and frameworks are available for JavaScript, which is part of a large and vibrant ecosystem. Well-known utilities like jQuery simplify DOM manipulation, and frameworks like React, Angular, and Vue offer organized and effective ways to create intricate user interfaces. This wealth of tools supports multiple application architectures and speeds up development.

Intermittent Programming

Effective Asynchronous Operations: JavaScript’s asynchronous programming paradigm, based on events and callbacks, enables programmers to manage several tasks simultaneously without impeding program performance. This helps enhance application speed, especially when managing user interactions and submitting network requests.

Cross-Platform Development

JavaScript’s flexibility translates to cross-platform development, allowing programmers to create apps that function flawlessly across various platforms, including desktop programs, mobile apps, and web browsers. This cross-platform functionality extends the reach of apps into new contexts and streamlines development.

Community-Driven Innovation

A sizable and vibrant community actively contributes to the ongoing development of JavaScript, which is advantageous. Creativity is encouraged because of this dynamic environment, which always adds new libraries, frameworks, and tools. Because of the JavaScript community’s collaborative spirit, developers are guaranteed access to state-of-the-art methods and best practices.

Community-Driven Innovation

Credits: Freepik

Cons

Difficulties with Browser Compatibility

Inconsistencies between different browsers’ interpretations and executions of JavaScript code might cause compatibility problems even if most browsers widely support JavaScript. Developments frequently need to build workarounds or polyfills to guarantee consistent behavior across several platforms.

Issues with security

JavaScript pose security risks because it is a client-side scripting language accessible to end users. To reduce risks like cross-site scripting (XSS) attacks and guarantee the security of sensitive data, developers must implement the appropriate security measures.

Execution in a Single Thread

JavaScript uses a single-threaded event loop, which can cause performance issues when multiple resource-intensive operations must be completed at once. Applications’ responsiveness may be impacted by this restriction, especially regarding CPU-bound tasks.

Recall Hell

A common feature of asynchronous JavaScript programming is nested callbacks, which can result in “callback hell” or the “pyramid of doom.” Nested callbacks can harm code quality by making the code more difficult to read and maintain.

Also read Choosing the Right Web Hosting for Developers

Ruby on Rails vs JavaScript: 13 Key differences

Ruby on Rails vs JavaScript 13 Key differences

Let us understand the 12 key differences between Ruby on Rails vs JavaScript.

Ruby on Rails vs JavaScript: Coding Speed

The first key difference in our Ruby on Rails vs JavaScript debate is coding speed.

Ruby on Rails

Ruby on Rails simplifies the coding process by giving convention precedence over configuration. Developers can work more quickly because they spend less time on boilerplate code when established norms are in place. It is effective for projects adhering to established conventions since it facilitates quick feature creation through generators and a well-organized structure.

JavaScript

JavaScript offers versatility in coding styles because it is a versatile language used on the client side (with Node.js) and on the server. However, this adaptability may result in different approaches to coding by developers. React, and Angular are frameworks that establish their own standards and impact writing speed by offering reusable components while enabling a wider range of coding patterns.

Ruby on Rails vs JavaScript: Performance

The next key point in Ruby on Rails vs Javascript is performance.

Ruby on Rails

Due to its synchronous execution architecture, Ruby on Rails may find it difficult to handle several concurrent requests effectively. Its performance may be an issue in situations with heavy traffic, even if it is appropriate for many applications. Frequently, caching systems and optimization approaches are utilized to alleviate such bottlenecks.

JavaScript

JavaScript’s asynchronous functionality—especially when combined with the event-driven model—works well when multiple tasks must be completed simultaneously. Because of this, it is a good fit for real-time applications and scenarios that call for the effective management of multiple processes at once. Features like the event loop improve its performance and make it responsive in various use situations.

Ruby on Rails vs JavaScript: Documentation

The next key point in Ruby on Rails vs Javascript is Documentation.

Ruby on Rails

Documentation is a comprehensive and well-organized resource that provides developers with detailed guidelines and instructions for building web applications. It covers a wide range of topics from basic setup, configuration, and conventions to advanced features like database migrations, active record associations, and action view helpers. The Rails documentation is known for its clarity and practical examples, making it a valuable resource for both beginners and experienced developers looking to harness the full potential of Rails in their web development projects.

JavaScript

Because of its sizable and vibrant developer community, JavaScript has an abundance of documentation. Accessible lessons, comprehensive resources, and guides make learning and troubleshooting easier. JavaScript is popular because of its wealth of documentation, which makes it usable by developers of all stripes.

Ruby on Rails vs JavaScript Documentation

Credits: Freepik

Ruby on Rails vs JavaScript: Learning Curve

Which is easier to learn in the Ruby on Rails vs JavaScript argument. Let’s discuss.

Ruby on Rails

Due to its rigid rules and opinionated structure, Ruby on Rails may have a more demanding learning curve for beginners. It’s necessary to comprehend the Rails methodology to appreciate the preference for convention over configuration. This structure can improve developer productivity once it is understood.

JavaScript

JavaScript has a more gradual learning curve, especially with recent frameworks like React. Because of its adaptability, developers may use it gradually, and novices can quickly learn how to use it thanks to the information available. JavaScript’s modular design makes it easier to understand particular features without grasping the entire language’s intricacy.

Also read A Comprehensive Guide To Universal Plug-and-Play Protocol (with Sample UPnP Router Configuration)

Ruby on Rails vs JavaScript: Multi-Threading support

Multiple thread support is a critical differential aspect in the ruby on rails vs javascript debate.

Ruby on Rails

Ruby on Rails’s multi-threading features enables the simultaneous execution of several tasks. Because it improves application responsiveness, this functionality is appropriate when managing numerous tasks simultaneously, which is crucial.

JavaScript

Multithreading is not supported by JavaScript by default. Although it makes up for this via asynchronous operations and the event loop, in some use situations where parallel task processing is necessary, the lack of native multi-threading may negatively affect performance.

Ruby on Rails vs JavaScript: Security

Ruby on Rails vs JavaScript Security

Credits: Freepik

For any big organization, security is important, especially regarding the ruby on rails vs javascript argument.

Ruby on Rails

Ruby on Rails strongly emphasizes security, incorporating features to protect against common vulnerabilities. Built-in safeguards against SQL injection and other security measures make it a secure choice for web development.

JavaScript

JavaScript requires additional security considerations, mainly when operating on the client side. Measures such as input validation and protection against cross-site scripting (XSS) attacks are crucial to ensure the security of web applications.

Ruby on Rails vs JavaScript: Application Architecture

What is the architecture basis of both in the ruby on rails vs javascript? Let’s discuss.

Ruby on Rails

Ruby on Rails offers an organized method for structuring code by adhering to the Model-View-Controller (MVC) architecture. Larger codebases are easier to manage and maintain because this modular design promotes code separation.

Java Script

React and other JavaScript frameworks frequently use a component-based architecture, in which the user interface is created by assembling reusable components. Although it deviates from the conventional MVC design, this method provides a more flexible and modular way to organize code.

Ruby on Rails vs JavaScript: Scalability

The next key point in Ruby on Rails vs Javascript is scalability.

Ruby on Rails

Ruby on Rails is scalable, but larger apps might need to add extra servers or perform horizontal scaling to handle expanding user bases. There are restrictions on vertical scaling or adding extra resources to a single server; substantial scalability requires careful planning.

JavaScript

JavaScript event-driven approach and capacity to manage asynchronous workloads facilitate it’s scalability. It works well with many concurrent activities and user interactions, making it appropriate for scalable systems.

Ruby on Rails vs JavaScript: Execution

Let’s discuss the next key point in Ruby on Rails vs Javascript Execution.

Ruby on Rails

Ruby on Rails is a server-side framework that executes on the server and renders content on the client. Before delivering the finished product to the client, server-side processing enables database interactions and the execution of business logic.

JavaScript

JavaScript is client-side code that adds dynamic content and interactivity to improve user experience. Its real-time modification of the Document Object Model (DOM) makes the user interface snappier and more responsive.

Ruby on Rails vs JavaScript: Ease of testing

Which is easier to test Ruby on rails vs javascript? Let’s discuss.

Ruby on Rails

Ruby on Rails provides a standardized testing environment with built-in support for popular testing frameworks like RSpec and MiniTest. Its convention over configuration philosophy simplifies the setup process and frees developers to focus more on test writing.

The framework encourages factories and fixtures like FactoryBot to speed up test data creation. With Rails, automated testing is easy and can easily connect to continuous integration systems.

JavaScript

Testing in the JavaScript world is made easier by several frameworks, including Jest, Mocha, Jasmine, and Karma. Thanks to the variety of solutions available, developers can select a framework based on their tastes and project requirements. However, testing asynchronous code, which is a frequent practice in JavaScript development, can be difficult. Despite this, asynchronous testing is now well supported by frameworks like Jest.

Ruby on Rails vs JavaScript: Development Cost

Let’s discuss the next key point regarding development cost in Ruby on Rails vs Javascript.

Ruby on Rails

The convention over the configuration philosophy of Ruby on Rails makes development more practical and economical. The framework frees developers to concentrate on creating features rather than setting things up by reducing the amount of boilerplate code and configuration required.

Because there is a large community of gems and plugins for Rails, pre-made solutions for common functionalities are available. This wealth of resources has the potential to drastically save development expenses and time.

JavaScript

JavaScript offers a more complex picture of development expenses because of its adaptability to front-end and back-end development. Although the language is flexible, knowledge of several frameworks and libraries may be required due to the division of frontend and backend tasks. This specialization may affect development costs because it calls for a varied skill set from the development team.

Ruby on Rails vs JavaScript: Cost to Hire

Let’s discuss the next key point regarding cost to hire in Ruby on Rails vs Javascript.

Ruby on Rails

Developers specializing in backend web development with Ruby on Rails may charge differently. Praise has been given to the Ruby on Rails framework for its relative accessibility and convention over configuration. Although a passionate community surrounds the ecosystem, there may not be as many developers as there are for JavaScript.

Nonetheless, Ruby on Rails’s streamlined design may shorten development cycles, impacting overall expenses.

JavaScript

The cost of hiring JavaScript developers might vary significantly based on several variables. A flexible language used for both front-end and back-end development is JavaScript. Because there is a huge pool of developers with these talents, frontend JavaScript engineers specializing in frameworks like React, Angular, or Vue.js may be more widely available and potentially more economical.

Conversely, employing backend JavaScript developers—especially those with experience with Node.js—may be more affordable, but it might also call for a more specialized skill set.

Ruby on Rails vs JavaScript: Data Handling and Database Interactions

Finally, let’s discuss data handling and data interactions of Ruby on Rails vs Javascript.

Ruby on Rails

Because Ruby on Rails integrates the Active Record ORM, database interactions are simpler. Instead of using SQL queries, developers can abstract away the complexity of database operations using Ruby code. Data handling procedures are streamlined by this abstraction, which improves developer friendliness.

JavaScript

Though it doesn’t have an integrated ORM like Active Record, JavaScript offers several database choices when utilized on the server side with Node.js. To manage database interactions, developers frequently rely on other libraries or frameworks like Mongoose for MongoDB, which adds another configuration level.

Let’s summarize it in a tabular format.

summarize Key differences in a tabular format

Ruby on Rails vs JavaScript: When to use what?

Ruby on Rails vs JavaScript When to use what

Credits: Freepik

The question in our ruby on rails vs javascript debate is the scenarios to use both. Let’s discuss the use cases of Both Ruby on Rails and JavaScript.

Use Cases of Ruby on Rails

Quick Prototyping

Projects requiring quick iterations and rapid prototyping are a good fit for Ruby on Rails. It is a great option for startups or projects with short deadlines because of its convention over the configuration concept, which enables developers to get started quickly.

Because the framework adheres to the convention over configuration (CoC) approach, developers can expedite their work by avoiding excessive time spent on configuration details. This is especially helpful for new businesses or projects with short timelines when the goal is rapidly constructing a working prototype to test concepts and get input.

Development Driven by Conventions

Ruby on Rails is a suitable choice if you like convention-driven development and want a framework for your decision-making. This may result in a development approach that is simpler and more predictable.

A collection of conventions that specify how specific parts of the application must be structured are included with the framework. As a result, the development process is more straightforward and more reliable. By automating organizing files and naming conventions, developers can focus more on building application-specific code.

Systems for managing content (CMS)

Ruby on Rails can be a wise choice for developing content management systems, where CRUD (Create, Read, Update, Delete) procedures are common. Because of its scaffolding characteristics, generating basic CRUD functionality is a breeze.

Because the scaffolding elements of the framework allow for the quick production of basic CRUD functionality, developing applications that involve managing and publishing material is made easier. This is especially helpful for developing content management systems (CMS) because creating, editing, and removing content are essential features.

Single-unit applications

Ruby on Rails can be a good option for monolithic systems with closely integrated front and back ends. It offers a full-stack framework that makes constructing client-side and server-side components easier.

Processes for development, testing, and deployment are made simpler by this cohesiveness. It is extremely helpful in smaller to medium-sized application development, where microservices could be superfluous. Because Ruby on Rails is interconnected, it simplifies developing and maintaining a single application by allowing for the effective development and management of many services.

Use Cases of JavaScript

Applications on a Single Page (SPA)

When creating single-page applications, JavaScript excels because it provides a dynamic and responsive user experience. SPAs are easily created with frameworks like React, Angular, and Vue.js, which update website sections quickly without requiring a whole page reload.

Asynchrony in Tasks

Applications largely relying on asynchronous activities is ideally suited for JavaScript, especially when combined with the server-side Node.js runtime. JavaScript’s event-driven paradigm is advantageous for real-time applications, chat applications, and applications with a high level of user interaction.

Mobile Cross-Platform Development

If you’re considering developing mobile apps for several platforms, you may write code only once and run it on iOS and Android using frameworks like React Native, which is built on JavaScript.

The architecture of Microservices

Building microservices with JavaScript and Node.js is a viable combination. Its scalability and non-blocking I/O paradigm make it an excellent option for managing several concurrent connections.

Hybrid Scenario

JavaScript Development in Full Stack

Think about employing a full-stack JavaScript strategy, integrating a JavaScript framework like React or Angular on the front with Node.js on the backend. This gives the application’s two sides a common language.

Progressive Web Apps (PWAs)

Progressive Web Applications (PWAs) are frequently constructed utilizing JavaScript and service workers.

Conclusion

In conclusion, selecting between JavaScript and Ruby on Rails is an important choice that will greatly impact web application development. To give developers and decision-makers a thorough knowledge, we examined the definitions of both technologies in this article and looked at their advantages and disadvantages.

Our investigation examined 13 significant distinctions between JavaScript and Ruby on Rails, including issues like language type, architecture, scalability, and community support. Making decisions based on project requirements and development priorities requires understanding these distinctions.

RedSwitches might be essential in supporting your chosen technology stack regarding hosting and Dedicated Server solutions. Their proficiency in offering dependable and expandable hosting solutions guarantees that your JavaScript or Ruby on Rails web apps operate efficiently and smoothly to satisfy customer requests.

FAQs

Q. Can you use JavaScript with Ruby on Rails?

Yes, you can use JavaScript with Ruby on Rails. JavaScript is often employed for frontend development in Rails applications, and the two technologies can complement each other seamlessly.

Q. Ruby on Rails vs JavaScript: Which is better?

The superiority of Ruby or JavaScript depends on the context. Ruby excels in simplicity and convention-driven development, while JavaScript’s strength lies in its versatility for both frontend and backend, making the choice dependent on project requirements.

Q. Is JavaScript or Ruby full stack?

While JavaScript is considered full stack with the advent of Node.js for backend development, Ruby is predominantly used on the backend with Ruby on Rails. JavaScript, with frameworks like MEAN or MERN, allows full-stack development.

Q. Is Ruby only the backend?

Ruby is often associated with backend development, especially with frameworks like Ruby on Rails. However, it can also be used for scripting and automation, and its versatility extends beyond backend-only applications.

Q. What is Ruby on Rails?

Ruby on Rails, often simply called Rails, is a development framework written in Ruby, which is a popular and easy-to-learn programming language. It is used for building web applications and follows the MVC (Model-View-Controller) framework.

Q. What is JavaScript?

JavaScript is a client-side scripting language primarily used for front-end development of web applications. It is often used in conjunction with HTML and CSS to create interactive user experiences.

Q. What are the main differences between Ruby on Rails and JavaScript?

Ruby on Rails is a full-stack web development framework, while JavaScript is primarily a client-side scripting language. Ruby on Rails is used for server-side development, whereas JavaScript is used for client-side scripting and creating interactive web interfaces.

Q. When should I use Ruby on Rails?

Ruby on Rails is suitable for building web applications, particularly when rapid development and adhering to the MVC architecture are priorities. It is often preferred for its readable and clean code, making it a popular choice for startups and small to medium-sized businesses.

Q. When should I use JavaScript?

JavaScript is essential for front-end web development and creating dynamic and interactive user interfaces. It is also used for server-side development through platforms like Node.js. JavaScript is well suited for building single-page applications and adding interactivity to websites.

Q. What are the use cases for Ruby on Rails?

Ruby on Rails is commonly used for building e-commerce platforms, content management systems, social networking sites, and other web applications that require rapid development and scalability. It is also favored for its strong community support and extensive libraries.

Q. What are the use cases for JavaScript?

JavaScript is used for creating interactive web interfaces, developing mobile applications, building real-time web applications, and implementing server-side applications with Node.js. It is versatile and widely used in web development.

Q. What are the advantages of using Ruby on Rails over JavaScript?

Ruby on Rails offers a convention over configuration approach, which simplifies and speeds up the development process. It also provides a rich set of tools and libraries for rapid application development, making it a preferred choice for building web applications.

Q. What are the advantages of using JavaScript over Ruby on Rails?

JavaScript excels in creating interactive and dynamic user interfaces. It is well-suited for asynchronous programming and handling real-time data, making it a popular choice for modern web development. Additionally, the use of Node.js enables JavaScript for server-side development.

Q. Which is easier to learn, Ruby on Rails or JavaScript?

JavaScript is generally considered easier to learn than Ruby on Rails, especially for individuals already familiar with HTML and CSS. However, both have extensive resources and communities for learning and mastering their respective technologies.