RubyMine 2023.3 Help

Deploy apps using Deployment configurations

RubyMine provides the capability to deploy applications to remote servers using deployment configurations. In this topic, we'll show you how to set up a remote deployment server, browse its file system right from the IDE, and upload your web application to this server.

Prerequisites

Before deploying your application to a remote server:

Configure a deployment server

You can configure the deployment server as follows:

  1. Open Settings Control+Alt+S and go to the Build, Execution, Deployment | Deployment page.

  2. Click Add and select a file transfer protocol, for example, SFTP.

  3. In the Create New Server dialog, specify the configuration name and click OK.

  4. Specify the following settings in the Connection tab:

    Deployment configuration: Connection tab
    • Visible only for this project: enable this option if you do not want to share the configuration between projects.

    • Type: specify the way to access the server.

    • SSH configuration: select the existing SSH configuration used to access the server or click the ellipsis button to add a new one.

    • Root path: leave the default / path to point at the root folder on the server.

    • Web server URL: specify the root URL address.

  5. Switch to the Mapping tab to specify where to deploy your application:

    Deployment configuration: Connection tab
    • Local path: specify the path to the project root on a local machine, for example, /Users/jetbrains/RubymineProjects/sample_rails_app.

    • Deployment path: specify the deployment folder on your server. In our case, it will be /home/deploy/sample_rails_app.

  6. (Optional) On the Excluded Paths tab, you can configure a list of local and remote folders that you do not want to be involved in upload/download.

Browse a remote host

After you've configured the deployment server, you can browse its file system right from the IDE:

  1. Select Tools | Deployment | Browse Remote Host from the main menu.

  2. In the invoked Remote Host tool window, you can perform various actions, for example:

    Remote Host
    • Drag files between the remote server and local machine (by using the Remote Host and Project Alt+1 tool windows).

    • Create and remove files and directories.

    • Compare and synchronize files of the local and remote projects.

Upload your app to a server

After you've configured a deployment server, you can upload your project to this server:

  1. In the Project view Alt+1, right-click the root project directory and select Deployment | Upload to <configuration name>.

  2. Wait until RubyMine copies the project files to the remote host. You can see the deployment status in the File Transfer tool window (View | Tool Windows | File Transfer).

    File Transfer

    For more information about synchronizing changes between the local and remote projects, refer to Synchronize changes.

Synchronize changes

After you've made changes in your local project, you need to upload new files to the remote server. RubyMine allows you to compare local and remote files/directories, synchronize changes manually, or enable automatic upload.

Synchronize changes manually

  1. In the Project view Alt+1, select the required file or directory for synchronizing. For example, if you want to synchronize the entire project, select the project root.

  2. Go to Tools | Deployment | Sync with <configuration name>.

  3. In the invoked dialog, you can select individual files and compare their local and remote versions.

    Diff between files

    Use the Synchronize Selected button Enter to upload changes for the selected file. Synchronize All Control+Enter allows you to upload all files at once.

Enable automatic uploading

  1. Specify the default upload server. Open Settings | Build, Execution, Deployment | Deployment, select the desired server, and click Use as Default.

  2. Go to the Build, Execution, Deployment | Deployment | Options page and set the Upload changed files automatically to the default server option to Always, or On explicit save action.

Disable uploading external changes

By default, RubyMine also uploads the files if they are changed by some external process, such as a VCS branch change, compilation of SASS or LESS, or a File Watcher. To change this behavior:

  1. Open Settings and go to the Build, Execution, Deployment | Deployment | Options page.

  2. Set Upload changed files to the default server to Always and enable the Skip external changes option.

Configure deployment options

To configure deployment options, open Settings Control+Alt+S and go to the Preferences | Build, Execution, Deployment | Deployment | Options page. Use this page to specify additional configuration settings for uploading and downloading project files to and from local and remote servers.

Options

Item

Description

Exclude items by name

In this field, specify patterns for the names of files and folders that you do not need to be deployed.

Use semicolons ; as delimiters, asterisks * to match zero or more characters, and question marks ? to match a single character.

For example, if you have a folder stylesheets with three files style.css, style1.css, and style2.scss, then style* excludes the entire folder, style?.css excludes style.css, and style?.* excludes style1.css and style2.scss.

Learn more from Regular-Expressions.info.

The exclusion is applied recursively. This means that if a matching folder has subfolders, the contents of these subfolders are not deployed either.

Operations logging

Use this list to specify how much detailed logging you need to have. The available options are:

  • Errors only: select this option to have the log show only errors occurred during upload.

  • Brief: select this option to have all events reflected in the log but without details.

  • Details: select this option to have more details on the upload shown in the log, for example, full file paths.

Overwrite up-to-date files

If this checkbox is selected, all files will be uploaded no matter whether they have been changed since the previous upload or not.

Otherwise, if this checkbox is not selected, only the files that have been changed since the previous upload will be uploaded.

Preserve files timestamps

Select this checkbox to prevent resetting timestamps of files on upload.

Delete target items when source ones do not exist (when transferring from Project view or Remote Host view)

If this checkbox is selected, any file in the destination directory will be removed if the file with this name is not involved in the current upload.

This option is applicable when synchronization if performed from the Project tool window or from the Remote Host tool window.

Create empty directories

Select this checkbox to have an empty directory on the server created automatically if a new local directory has been created in your project since the last upload in the source folder.

Prompt when overwriting or deleting local items

Select this checkbox to have RubyMine prompt for confirmation before overwriting or deleting local items for synchronization during download.

Confirm uploading files

Select this checkbox to have RubyMine prompt for confirmation before uploading local items to a remote host.

Upload changed files automatically to the default server

From this list, choose when you want RubyMine to automatically upload a file to the default server or server group. The available options are:

  • Always: choose this option to have a file uploaded upon each save, no matter automatic or explicitly invoked.

  • On explicit save action: choose this option to have a file uploaded after save only if this save was invoked manually by choosing File | Save All or pressing Control+S.

  • Never: choose this option to suppress automatic upload.

The default server configuration or a server group is appointed on the Deployment page by selecting the desired item in the list and clicking the Use as Default toolbar button icon use web server configuration as default.

Skip external changes

Select this checkbox to exclude local changes that were made using a third-party tool (a VCS, a script, and so on) from automatic upload.

The checkbox is available only when the Always or On explicit save action option is selected in the Upload changed files automatically to the default server list.

Delete remote files when local are deleted

Select this checkbox to have RubyMine automatically delete remote files during automatic uploads in case the local ones are deleted. The checkbox is available only when the Always or On explicit save action option is selected in the Upload changed files automatically to the default server list.

Note that this option serves as an extra safety measure and may result in unwanted files remaining on the remote server. As an example, consider a local file Foo.php, which is renamed to Bar.php. Since renaming a file is technically indistinguishable from deleting the file and creating a new one, the following will happen after automatic upload:

  • If the option is enabled, the remote server will only contain Bar.php.

  • If the option is disabled, the remote server will contain both Foo.php and Bar.php after automatic upload. You will probably need to delete Foo.php manually afterwards.

Preserve original file permissions

If enabled, RubyMine will preserve the original local files' permissions when uploading files on remote hosts over FTP/FTPS.

The option is only available for macOS and Linux.

Override default permissions on files

Select this checkbox to change the default permissions assigned to uploaded files on remote hosts. Click Browse the Browse button to open the Files Default Permissions dialog, where you can manage access to uploaded files on remote hosts by assigning permissions.

Override default permissions on folders

Select this checkbox to change the default permissions assigned to uploaded folders on remote hosts. Click Browse the Browse button to open the Folders Default Permissions dialog, where you can manage access to uploaded folders on remote hosts by assigning permissions.

Warn when uploading over newer file

Use this list to define the version-control policy to apply when uploading files to remote hosts. Depending on this choice, RubyMine either checks whether any changes have been made to the corresponding files on the remote host since you downloaded them or just overwrites the remote files.

  • No choose this option to have the file on the remote host overwritten with its local copy silently. All the changes made to the remote file since your last synchronization will be abandoned.

  • Compare timestamp & size if you choose this option, RubyMine performs two checks:

    1. Compares the sizes of the local and remote files.

    2. Compares the remote file timestamp set at the moment of the last synchronization with the current remote file timestamp.

    If the files differ in their size or the remote file timestamps differ, RubyMine opens a Diff Viewer for Files, where you can explore and integrate the differences.

    This type of check depends on the timezone setting. If the timezone setting on your local machine is different from that on the remote host, the check may be successful even though the file versions actually differ.

  • Compare content when this option is chosen, RubyMine compares the content of the local and remote files. If any diversions are detected, RubyMine opens a Diff Viewer for Files, where you can explore and integrate the differences.

Notify of remote changes

Select this checkbox to receive notifications about changes on the remote host. The checkbox is available only when the Compare timestamp and size or Compare content option is selected in the Warn when uploading over newer file list.

Last modified: 10 January 2024